본문 바로가기

Coding Note

[WPF] WPF 시작하기

최근 WPF를 공부해야할 일이 생겼다.
공부하면서 WPF관련 글들좀 적어보려한다.
pro WPF in C# 2010로 공부하기 때문에 이 책에서 참고한 내용이 많을 듯 하다.
하지만 내가 이해하고 적는 내용이기 때문에 직접적인 레퍼런스가 아닌 한 특별한 언급없이 글을 쓸것이다.

우선 WPF가 뭔지 간단하게 알고 넘어가자
WPF는 Windows Presentation Foundation의 약자로 윈도우즈 표현 기법!...  이라고 해석되려나..
그렇다 치고, 표현기법이라니?  WPF는 지금까지의 윈도우 표현의 틀을 깨버린 참신한 기법이다.
무엇에 대한 표현인고 하니,  윈도우 에 대한 표현이 되겠다. 즉 윈도우즈 프로그래밍의 새로운 한 분야라고 할 수 있겠다.

오호 그럼 잠깐 지금까지의 윈도우 프로그래밍을 살펴보자..
(여기서 말하는 윈도우 프로그래밍은 윈도우 어플리케이션 프로그래밍이 더 정확한 사용일 듯 하지만,, 그냥 패스)
WIN32API와 MFC를 사용한다면, OS깊이까지 다룰 수 있고, 풍부한 API지원으로 원하는 만큼 그리고 실력만큼 윈도우를 만들 수 있었다. 말일 즉 토나올듯한 API들과 무수한 파라미터들..  (물론 레퍼런스를 옆에 끼고 보겠지만)에 질식해버릴 것 같다는 소리다.

그렇다면 닷넷프레임 웍의 C# WinForm이나 VB 등, 드래그 앤 드랍 방식의 윈도우즈 폼 프로그래밍은 어떠한가? 이것들이 나오면서 윈도우 제작이 한층 편해진 것은 사실이다.
하.지.만.. 한가지 걸림돌은 프로그래머의 두뇌를 자극해주는 디자인요청!
코딩하기도 바쁜데 UI디자인까지 해야된다니..  그렇다고 디자이너가 그려주는 이미지를 사용하기엔 프로그래머를 과신하는 듯한 폼 디자인에 뇌가꼬여버릴 것 같다. 배보다 배꼽이 더 커진 상황이다.(물론 디자인Zero인 폼에선 WinForm이 편하다.)

그 외에 자바나 다른 프로그래밍 언어들을 통해 윈도우를 만들 수 있었지만, 여전히 창하나띄우는데 복잡하거나 디자인을 조금이라도 추가해야 한다면 밤샘은 기본!
(다른 언어에서의 윈도우 프로그래밍은 사실 잘 모름)

이처럼 WPF 이전의 기법들로는 윈도우즈 프로그래밍이 만만치만은 않았다. 특히나 프로젝트 규모가 커졌을 때 가장 신경쓰이는 디자인 부분은, 프로그래머가 해결하기엔 너무나 벅찼고, 디자이너는 그런 프로그래머의 마음을 해야려주지 않았다. 그렇다고 프로그래밍 잘하는 디자이너가 많은것도 아니다.

이런 상황속에 디자이너와 프로그래머의 본질적인 작업분할을 목적으로(여러 목적 중 하나..) WPF는 탄생했다.
(맞는진 모르겠고 그냥 WPF공부하면서 그런생각이 들었음..  틀리면 댓글로)

그럼 WPF가 어떤 특징을 가지는지 알아보자.
아, 우선 WPF는 다른 프로그래밍 언어처럼 새롭게 나온 '언어'가 아니다. 단지 기법(또는 토대)이라고 총칭되는 한 분야일 뿐이다.. 오해하지 말자.

특징 1:
WPF는 UX(User eXperience)에 부흥하는 윈도우 어플리케이션의 제작을 손쉽게 해준다. UX의 뜻은 사용자 경험 이라지만, 직역된 단어라 큰 연관은 없는 듯 하다. UX에 부흥하는 어플리케이션이란 쉽게말해 사용자가 어플리케이션에게 다가가 이리뜯어보고 저리뜯어봐 익히는 구시대적 적응방식이 아닌, 어플리케이션이 사용자에게 다가와 이해하기 쉬워지는 어플리케이션이라고 할 수 있다.
 음.. 뭔소리냐 더욱 복잡해진다....  간단하게 말해서 경험적으로 쉽게 파악가능한 어플리케이션이라고 말하면 되겠다.

특징 2:
WPF는 GUI개발이 무지 편하다. C#또는 VB로써 내부 로직이 표현되고, 그 외향은 XML을 바탕으로한 XAML(eXtensible Application Markup Language)로써 다음어지게 된다. 이 XAML이라는 표현방식을 통해서 디자이너와 프로그래머의 완벽한 분업, 그리고 디자이너의 생각대로 표현가능한 어플리케이션이 가능해졌다.

특징 3:
WPF는 픽셀그래픽 방식의 그래픽 처리에서 벡터그래픽 방식의 그래픽처리로 발전하였고, 이를위해 랜더링엔진이 탑재되어있다.

특징 4:
WPF는 지금까지의 윈도우 어플리케이션 프로그래밍과 다르게 DirectX 를 활용한 그래픽 처리를 가능하게 하여 사용자에게 한층 더 멋지게 다가갈 수 있는 기능들을 지원해준다. Windows Vista 이후의 OS에서 투명도조절이나 안티엘리어싱 지원 등이 눈에띄는 예이다.

특징 5:
WPF는 그래픽 처리를 DirectX에게 맡기고 CPU는 내부 로직처리에 더욱 힘쓸 수 있도록 CPU가속을 지원한다.

큰 특징 다섯개만(사실 생각나는것만) 짚어봤다. 이것만 봐도 WPF가 대단하게 느껴진다. 특히나 DirectX와 CPU가속이라닛. 앞으로 공부해 가면서 더욱 놀랄점이 많을 것 같아 기대된다.

그런데 WPF를 공부하기 위해선 WPF 어플리케이션프로그래밍이 가능한 환경을 만들어줘야한다.
WPF가 윈도우 비스타 버전 이후의 어플리케이션을 위해 나온 만큼 Windows Vista 혹은 Windows 7 이상의 OS버전이 필요하다.
(XP 서비스팩2 에서도 어플리케이션이 실행 될 수 있지만, 구현된 이쁜디자인은 볼 수 없다.)
그리고 .NET 프레임웤 4. 이상의 프레임웤이 필요하다. 마지막으로 개발도구는 Visual Studio 2010 이상의 버전을 필요로 한다.(현재 이 글은 WPF 2010을 기준으로 작성. WPF 2008버전은 OS요구는 같고, .NET Framework 3.x, VS 2008이상의 버전이 필요하다.)

아, WPF 버전4(c# 2010)과 3.x의 차이는 정확하게 모르겠다. .NET Framework이 4.대로 업그레이드 하면서 새로운 기능들이 많이 추가됬다곤 하는데,, DirectX처럼 버전 다르면 망하는 수준인지는 잘 모르겠다.

WPF를 통한 어플리케이션에는 Silverlight, XBAP, Full WPF application 이 있는데 이건 앞으로 차차 알아보자.
이 포스팅에는 Full WPF app에 초점이 맞춰질것이다.

'Coding Note' 카테고리의 다른 글

[WPF] about XAML  (0) 2012.01.19
[WPF] 첫번째 프로그램  (0) 2012.01.16
[C++] 상속과 다형성  (0) 2011.12.20
[OpenCL] AMD OpenCL configurate the interface at visual studio 2008  (0) 2011.12.02
[OpenCL] About  (0) 2011.11.22