WPF 개발 관련 문의드립니다.

안녕하세요. C++과 MFC위주로 개발을 했었습니다.

새로운 프로젝트를 하기위해 시간이 좀 생겨서 MFC의 노후화(?)로 인해
다른 언어 C#으로 배우려고 합니다. 선택지는 WInform과 WPF가 있는데
아무래도 진보적인 WPF를 해보려고 하는데
제가 개발할려는 프로젝트랑 맞는지에 대해서 선배님들의 조언을 구합니다.
작업은 CAD 작업같은 그래픽이 필요하고요. Bitmap의 Data를 Load하여
이 Data를 수정/변경 또는 확대 축소하여 보여주는 프로그램입니다.
UI는 복잡할것이 별로 없고요. 포토샵 비슷한 것이 되겠네요.
다만 Data는 많을수도 있어요.
WPF로 이걸 만들기 적합한지 궁금하네요.
기존에는 GDI/GDI Plus로 했었습니다.

  1. WPF에서 이런작업을 한다면 DirectX같은걸 이용해야 하나요? 아니면 GDI등을 그대로 써도되나요?
  2. WPF말고 다른것도 추천할께 있을까요? ex) C# winform UI에 코어는 DLL Load등.
  3. C#언어를 배워야 하는과정에서 WInform 을 건너뛰구 바로 WPF로 가도 괜찮을까요?

답변해주시면 감사합니다. ^^
좋은하루들 보내세요.

2 Likes
  1. WPF에서 이런작업을 한다면 DirectX같은걸 이용해야 하나요? 아니면 GDI등을 그대로 써도되나요?

아니요. WPF에서도 GDI/GDI PLus 처럼 직접 그리는 기능을 제공합니다.
FrameworkElementOnRender()를 오버라이드 한 후 DrawingContext를 이용하면 되는데 사용법은 GDI/GDI Plus와 유사합니다.

물론, DirectX를 이용해서 좀 더 성능을 끌어올릴 수는 있는데 그리기 성능이 중요한 경우 저는 WPF 대신 WinUI 3 + Win2D를 추천합니다.

  1. WPF말고 다른것도 추천할께 있을까요? ex) C# winform UI에 코어는 DLL Load등.

WPF에서 화면을 구성하는 방법은 XAML이라는 XML기반 언어를 사용하는데 바로 익숙하게 다루기에는 학습 커브가 좀 있습니다. 그런 면에서는 윈폼이 더 접근이 좋을 수 있어요.

윈폼 역시 GDI/GDI Plus를 이용할 수 있기 때문에 비슷한 감각으로 코딩이 가능합니다.

윈폼 역시 DirectX를 사용할 수 있어요. 관련된 라이브러리는 NuGet에서 검색이 가능합니다.

  1. C#언어를 배워야 하는과정에서 WInform 을 건너뛰구 바로 WPF로 가도 괜찮을까요?

WPF는 그 구성이 MFC와 상당히 상이하기 때문에 유사한 윈폼이 접근성이 좋은 것은 사실입니다.

회사에서 D-Day가 있는 프로젝트라면 WPF보다는 윈폼을 추천 드리고요,
개인 프로젝트의 경우 조금 더 시간을 둬서 WPF를 바로 접근해 보시는 것도 나쁘지 않습니다. 왜냐하면 CAD 작업의 주요 기능이 그리기일 것으로 예상되는데, WPF의 모든 기능을 다 알지 않고 필요한 기능만 빠르게 익숙해지셔도 가능할 것 같습니다.


그런데 그전에 C# 언어 자체를 학습하는 시간도 고려해야 합니다. C++에 능숙하시다면 짧은 기간 안에 습득이 가능하시겠지만 어쨌든 1개월 이상의 학습 시간은 할당하셔야 합니다.

4 Likes

WinUI는 첨들어보네요 ^^; 답변 너무 감사해요. WinUI와 WPF에 대해서 조금더 질문해보고싶네요 ㅡ.ㅜ

3 Likes

WinUI 감사합니다. ㅎ Win2D가 그래픽 면에서 빠른가보네요?
WPF에서도 Win2D는 사용가능한걸로 나오던데요.

  1. WinUI는 아직 나온지 얼마안되서 쓰는곳이 너무없지 않을까요? 배우는게 어려울 것 같은데…

  2. WPF에서도 Win2D를 쓴다가정하에 Win2D는 DIrectX기반인가요? DirectX2d랑은 다른거죠? 이건 찾아봐도 잘안나오길래요 Win2D가 개발된진 오래된것 같은데…

  3. WPF를 하더라도 나중에 WinUI3.0으로 갈아타긴 쉬울것 같은데… 방향이 비슷한 xmal구조?
    어떻게 생각하실까요? ^^

찾아보다가 강의하신것도 봤네요
감사합니다.

1 Like

네. 많이 빠릅니다. 하지만 Win2D의 성능을 온전히 사용하려면 UWP 또는 WinUI 3으로 개발 해야 합니다.

WPF에서도 Win2D를 쓸 수 있습니다. Taehui님의 블로그를 참고하세요! 멋진 Qwilight 게임을 만드신 분입니다.

WPF에서 Win2D 사용하기 예제 프로젝트 (NEW) : 네이버 블로그 (naver.com)
WPF에서 Win2D 사용하기 (NEW) : 네이버 블로그 (naver.com)

네 맞아요. WinUI 3는 올해 11월에 정식 릴리즈된 따뜻한 환경이라 아는 분이나 사용하시는 분이 아직은 많지는 않습니다. 다만 WinUI 3 환경은 UWP와 거의 유사하기 때문에 UWP 자료가 이미 풍부해서 접근하기가 어렵지는 않습니다.

WinRT로 제공하는 Direct2D 기능을 사용하는 것으로 알고 있습니다. UWP용 Win2D는 개발된지 이미 5년이 넘었습니다.

네. 맞아요. UWP의 XAML은 WPF의 XAML에서 발전했습니다. 구성된 컨트롤이 다르긴 하지만 비슷한 XAML 형식과 다양한 경험을 공유 합니다.

1 Like

추가질문하나드려요 ~ MFC환경인 프로젝트가 있는데 추가 윈도우 하나를 WPF DLL으로 개발해서
혹시 MFC환경에 dll. lib 형태로 Load해서 쓸수있는지요?

1 Like

글쎄요. 저는 관련 경험이 없습니다. 경험이 있는 분이 답변 주시면 감사하겠습니다.

1 Like