본문 바로가기

WPF

Direct2D : Your New Windows 2D Rendering API 윈도우 1.0이 세상에 나온지 25년이 지났지만, 아직도 초기와 비교해 크게 달라진 것이 없으며, 현역으로 사용되고 있는 것을 꼽으라면 단연 GDI일 것이다. GDI는 XP까지도 윈도우의 2D 프레젠테이션 엔진이었고, GDI+라는 확장된 버전이 작성되기도 했지만 근본적으로 2D 클리핑 기반 엔진이라는 한계를 가지고 있었다. GDI는 윈도우를 서로 겹칠 때 그 단점을 가장 뚜렷하게 관찰할 수 있다. 예를 들어 투명 효과를 구현하다면 복잡한 일이 될 수 밖에 없다. 직접 전체 화면에 대한 DC를 얻어내어 해당 위치에 대한 픽셀값을 계산해야 했기 때문이다. 또, 근본적으로 래스터라이즈된 이미지를 기반으로 동작하기 때문에, 확대, 축소 시에 이미지 손실이 발생한다. .NET에 탑재된 WPF는 벡터 기반으로 작성.. 더보기
WPF는 Win32를 대체하는 것인가? Windows Form 이후, WPF라는 물건을 접하면 대단히 놀라게 된다. 일단, WPF를 위시한 .NET Framework 3.0이 과거 WinFX로 알려졌던 것처럼, 20년간 윈도우 프로그래밍을 지배해온 Win32 기반의 프로그래밍이 드디어 대체되나 하는 기대를 했으니 말이다. WinFX라는 단어를 처음 들었을 때는, 확실히 그 이름에서 Win32의 후계자라는 느낌이 강했으니 무리는 아니다. 결국, WinFX는 Win32의 후계자가 아니라 .NET Framework에서 돌아가는 녀석이라는 것을 알았을 때 그 아쉬움이란.. 그동안 윈도우에서 뭔가 UI 작업을 하려면 귀찮음의 연속이었다. 사실 경험있는 개발자라면, C#으로 .NET Framework에서 Windows Form 이벤트 핸들러를 추가하나 .. 더보기
GDI, GDI+, WPF 고전적인 윈도우 프로그래밍은 곧 이벤트 핸들러를 작성하는 것이었고, WinMain()과 WndProc()를 작성하는 것이다. 사실, 이 방법론은 여러번 변경되어왔다. SDK를 사용한 Win32 API를 직접 사용하는 방법에서 MFC를 사용한 C++ 클래스 라이브러리를 사용하는 방법으로, 최근에는 Windows Forms을 사용하는 것으로 변경되어 왔는데, 숱하게 많은 방법론이 등장했음에도 불구하고 상대적으로 느린 변화를 보였던 것이 바로 윈도우 프리젠테이션 엔진이었다. 윈도우 프리젠테이션 엔진은 전통적으로 GDI라는 2D 클리핑 기반 엔진인데, 사실 MFC 시절까지도 이것은 큰 변화가 없었다. 이것이 .NET이 등장하면서 GDI+라는 것으로 재작성되어 나타났다. 그러나 근본적인 면에서 GDI+ 역시 2D.. 더보기