현재 wit에서 진행중인 WPF UI 테마 작업의 중간과정입니다.
이녀석이 아마도 첫번째 테마로 완성이 될 것 같습니다.^^
(가칭은... 'Godfather' ㅎㅎ 대부의 분위기가 느껴지나요?)

현재 wit에서는 WPF UI를 위한 여러가지 테마를 제작하고 있습니다. 또한 테마를 구성하는 컬러, 이펙트, 선굵기 등의
리소스를 체계적으로 관리할 수 있게끔 하려는 생각을 하고 있습니다.

반드시 좋은 결과물로 돌아오겠습니다! ㅎㅎ





저작자 표시 비영리 변경 금지
신고

Introduction

VisualStudio 혹은 Expression Blend에서 동작하는 WPF DesignTime Extension을 개발하려고할때 현재 작업중인 Assembly에 대한 정보가 필요할 때가 있습니다. Runtime상에서는 System.Reflection.Assembly.GetEntryAssembly를 이용해 간단하게 현재 실행중인 Assembly의 정보를 가져올 수 있지만, DesignTime에서는 EntryAssembly를 가져올 수 없기 때문에 문제가 발생합니다. 이번시간에는 DesignTime에서 현재 작업중인 Assembly에 대한 정보를 가져오는 방법에 대해 소개합니다.

GetEntryAssembly



신고

Introduction

아이폰을 사용하면서 여러가지 App들을 다운로드받아 사용하는데 무료 App중에 선택한 사진을 레고형태로 만들어주는 App이 있습니다. 한두번 만져보다가 신기해서 WPF로도 한번 구현해봐야겠다는 생각으로 구현해봤습니다. 사진을 선택하면 사진이 레고블럭으로 이루어진 듯한 효과를 내며 또다른 사진을 선택할경우 도미노를 연상케하는 효과로 사진이 전환됩니다. 실제 App보단 다소 디테일한 면이 부족하지만, 유사한 기능을 구현하시는 분들이시라면 참고하시는데에는 도움이 되실거라 생각됩니다. 아래는 소스코드입니다.

신고

Introduction

Windows Mobile 6.5의 다음 버전인 Windows Mobile 7이  Windows Phone7이라는 새로운 이름으로 공개되었습니다. 단순히 이름만 바뀐게 아니라 어플리케이션 개발방법이나 하드웨어 스펙 등이 바뀐다는 소식이 전해지면서 많은 개발자들이 혼란스러워 하고있습니다. 이번시간에는 새롭게 공개된 Windows Phone 7에 대한 개발 방법에 대해 소개합니다.

Development Environment

Windows Phone 7에서는 2가지 방법으로 Application을 개발 할 수 있습니다. 그중한가지는 Silverlight를 이용하는 방법이고, 다른 한가지 방법은 XNA를 이용하는 방법입니다. Silverlight와 XNA 두 기술 모두 .Net개발자들에게는 익순한 기술이기 때문에 반가운 소식이 되겠지만, C++ 등을 이용한 Native Code개발을 지원하지 않기때문에 Native Code개발자에게는 다소 적응이 필요한 상황입니다. Silverlight나 XNA를 이용해 개발을 하기 위해서는 Visual Studio 2010 Express for WindowPhone 을 이용해야 합니다.

Visual Studio 2010 Express for Windows Phone을 실행하면 다음 그림과 같이 Windows Phone Application을 개발할 수 있는 프로젝트 형식이 나타납니다. 일반 Windows Phone Application을 개발하기 위해서 Silverlight for Windows Phone을 이용할 수 있으며 Game을 개발하고자 한다면 XNA 4.0을 이용해 개발 할 수 있습니다.

Hardware Chassis

Windows Mobile의 경우 지원 하는 Device의 종류가 너무 다양하기 때문에 개발자로 하여금 여러가지 특징을 지닌 Device를 모두 허용할 수 있는 Application을 개발하기란 무리가 있었습니다. 예를 들어 화면 해상도나 버튼의 위치, 센서의 종류 등이 있습니다. Windows Phone7의 경우 모든 Device들이 충족해야하는 몇가지 특징들을 제시함으로서 개발자가 보다 쉽게 여러 단말기를 지원하는 Application을 개발할 수 있습니다.

가장먼저 소개해 드릴 내용은 Windows Phone7에 포함되어야 하는 버튼에 대한 내용입니다. 위 그림은 Windows Phone7의 기본 버튼들로 왼쪽 부터 Back, Start, Search 입니다. 각 버튼의 기능에 대한 설명은 다음과 같습니다.

Back Button

Back Button을 눌렀을때 일반적으로 프로그램을 종료하거나 WebBrowser에서와 같이 Navigation용도로 활용할 수 있는 버튼 입니다. 코드를 통해 Back Button의 동작을 제어 할 수 있습니다.

Start Button

Start Button은 프로그램 동작중에 누르게 되면 프로그램이 실행되어 있는 상태에서 곧바로 Start Screen으로 이동할 수 있습니다. Start Button에 대한 동작은 코드를 통해 제어 할 수 없습니다.

Search Button

Search Button은 프로그램이 검색과 관련된 내용이 필요한 경우 사용될 수 있는 버튼입니다. 기본적으로는 아무런 동작도 수행하지 않지만, 코드를 통해 Search Button에 대한 동작을 제어 할 수 있습니다.

그리고 Windows Phone7은 해상도를 480 * 800 혹은 320*480 의 해상도만을 제공하도록 하고 있습니다. 이는 위에서 언급했던데로, 서로 다른 해상도에 따르는 여러가지 Side Effect를 방지하기 위함입니다. (회전에 대한 해상도 변경은 별도로 지원합니다.)

그리고 이러한 특징 이외에 센서나 서비스에 대한 조건도 명시하고 잇습니다. Windows Phone7에서 필요로 하는 센서나 서비스는 아래와 같습니다.

Wi-Fi, Camera, Accelerometer, Compass, Location, Speech, Vibration, Push Notifications

Windows Phone7에서는 위에 나열된 센서 혹은 서비스가 반드시 포함되어 있어야 하기 때문에 개발자들은 해당 센서(혹은 서비스)지원 여부에 대해 고민하지 않아도 됩니다.

다음시간에는 Silverlight for WindowsPhone을 이용해 간단한 Application을 구현하는 방법에 대해 소개합니다.

신고

Introduction

UI를 개발하거나, 혹은 다른 이유로 WPF를 이용해 패턴을 그려야 하는 상황이 있습니다. 일반적인 방법으로는 패턴 이미지를 저장하여 패턴 이미지를 출력하거나, Brush의 Viewport 영역을 조절하여 패턴을 출력하는 방식을 사용합니다. 패턴이미지를 사용 할경우 예상되는 최대 크기로 패턴이미지를 저장하고 있어야 하기 때문에 불필요하게 많은 리소스를 차지 하게 되며, Brush의 Viewport 영역을 조절할 경우 해당 객체의 상대적인 크기에 비례하여 Viewport가 적용되기때문에 패턴의 크기가 고정적 이어야 할 경우 적합하지 않습니다.

이번시간에 소개할 내용은 Viewport 영역을 지정해 패턴을 그릴때 Viewport Unit을 사용해 패턴을 고정적인 크기로 사용하는 방법에 대해 소개합니다. ViewportUnit은 Viewport 영역이 상대값인지 절대 값인지를 지정하는 속성으로 기본값은 상대값으로 지정되어 있습니다.

왼쪽 그림은 Viewport Unit을 Absolute로 지정한 결과로 Viewport를 0,0,50,80 으로 지정했습니다. Viewport Unit이 Absolute로 지정되었기때문에 패턴의 크기가 50, 80으로 고정 되어 BoundingBox의 크기가 변경되더라도 패턴의 크기는 변경되지 않고 출력되는 패턴의 개수가 달라지게 됩니다.

반대로 오른쪽은 ViewportUnit이 기본값(RelativeToBoundingBox)으로 지정한 결과입니다. RelativeToBoundingBox의 경우 Viewport가 BoundingBox 영역의 상대적인 크기를 의미 하기 때문에 BoundingBox의 크기가 변경되어도 패턴의 개수는 일정하고 패턴의 크기가 달라지게 됩니다.

신고