본문 바로가기

wpf

Create Pixel Shader Based CustomBrush Introduction WPF Application을 개발하다보면 기본적으로 제공하는 Brush이외 다른 형식의 Brush가 필요한 상황이 있습니다. 예를들어 지난 포스팅(http://whatisthat.co.kr/169)에서 다루었던 AngleGradient가 대표적인 예라고 할 수 있겠습니다. 지난 포스팅에서는 MarkupExtension을 이용해 내부적으로 ImageBrush를 생성하여 Brush로 사용하는 방법에 대해 소개 했지만, 매번 대상의 크기가 변경될 때마다 새로운 이미지를 생성해주어야 하는 문제점 때문에 퍼포먼스 상의 이슈가 발생할 수 있습니다. 이번시간에는 MarkupExtension과 PixelShader를 이용해 Brush를 제작하는 방법에 대해 소개합니다. PixelShader를 .. 더보기
진행중인 WPF UI 테마 현재 wit에서 진행중인 WPF UI 테마 작업의 중간과정입니다. 이녀석이 아마도 첫번째 테마로 완성이 될 것 같습니다.^^ (가칭은... 'Godfather' ㅎㅎ 대부의 분위기가 느껴지나요?) 현재 wit에서는 WPF UI를 위한 여러가지 테마를 제작하고 있습니다. 또한 테마를 구성하는 컬러, 이펙트, 선굵기 등의 리소스를 체계적으로 관리할 수 있게끔 하려는 생각을 하고 있습니다. 반드시 좋은 결과물로 돌아오겠습니다! ㅎㅎ 더보기
Get EntryAssembly List for WPF DesignTime Introduction VisualStudio 혹은 Expression Blend에서 동작하는 WPF DesignTime Extension을 개발하려고할때 현재 작업중인 Assembly에 대한 정보가 필요할 때가 있습니다. Runtime상에서는 System.Reflection.Assembly.GetEntryAssembly를 이용해 간단하게 현재 실행중인 Assembly의 정보를 가져올 수 있지만, DesignTime에서는 EntryAssembly를 가져올 수 없기 때문에 문제가 발생합니다. 이번시간에는 DesignTime에서 현재 작업중인 Assembly에 대한 정보를 가져오는 방법에 대해 소개합니다. GetEntryAssembly public static Assembly GetEntryAssembly(.. 더보기
Lego Photo Presenter Using WPF Introduction 아이폰을 사용하면서 여러가지 App들을 다운로드받아 사용하는데 무료 App중에 선택한 사진을 레고형태로 만들어주는 App이 있습니다. 한두번 만져보다가 신기해서 WPF로도 한번 구현해봐야겠다는 생각으로 구현해봤습니다. 사진을 선택하면 사진이 레고블럭으로 이루어진 듯한 효과를 내며 또다른 사진을 선택할경우 도미노를 연상케하는 효과로 사진이 전환됩니다. 실제 App보단 다소 디테일한 면이 부족하지만, 유사한 기능을 구현하시는 분들이시라면 참고하시는데에는 도움이 되실거라 생각됩니다. 아래는 소스코드입니다. 더보기
ListBox SelectedItems Binding for MVVM Introduction MVVM패턴을 사용할 때 일반적으로 ListBox에 목록을 바인딩 하기 위해 ObservableCollection를 ItemSource에 바인딩하는 방법을 사용합니다. ObservableCollection의 경우 INotifyCollectionChanged를 상속받아 구현되었기 때문에 목록이 변경되었을때 마다 ListBox에 변경을 알려 ListBox의 View와 ObservableCollection의 목록이 동일하게 유지될 수 있도록 돕습니다. 그리고 ListBox의 현재 선택된 항목을 ViewModel에서 제어하기 위해 ListBox의 SelectedItem속성에 ViewModel의 속성을 TwoWay로 바인딩합니다. 하나의 선택된 항목을 관리하기 위해서 SelectedItem.. 더보기