안녕하세요~ 회사 프로젝트를 WPF로 개발해보려고 하는데요.
일단 C++,MFC로만 4년차고 C#,WPF는 틈틈히 회사내 테스트 프로그램을 개발해본게 다입니다.
팀내 디자이너 분이 있긴 하지만 지금까지는 Adobe xd로 작업해주시면 제가 좌표보고 image들을
그려내는 형태로 MFC를 개발했었구요.
시작하기전에 몇가지 궁금한게 있어서 도움을 받고자 합니다!
.NetFramework와 .Net 5 둘 중에 어떤걸로 WPF 프로젝트를 시작해야 할까요?
2개의 차이점은 대략 검색해서 알아보긴 했습니다만 대부분 추천은 당연하게도 .Net 5를 추천하긴 하더라구요. 다만 걱정되는 부분은 제가 AForge Video 라이브러리로 웹캠을 컨트롤 해야하는데 .net 5와 완벽하게 호환되지 않는다 라는 패키지 경고가 떠있어서 해당 라이브러리가 지원하는 .netframework를 해야하나 생각이 들긴합니다. (라이브러리는 간단하게 돌려보았습니다만 문제는 없더군요.)
WPF는 다국어 배포는 어떻게 하나요?
제가 MFC로 다국어 처리할 때는 별도의 언어테이블 파일을 따로 두었다가 언어 선택시 해당 언어 테이블을 읽어와서 새로 Drawing 해주는 형태였습니다.
디자이너와의 협업방식은 어떻게 될까요?
앞 서 말씀드린것 처럼 디자이너분이 adobe 디자인 툴로 작업한 걸 바탕으로 제가 좌표와 잘라놓은 이미지들을 그려내는 형태였습니다. 단점은 모니터 해상도가 높아짐에따라 다양한 해상도 지원이 어려웠습니다.
NetFramework와 .Net 5 둘 중에 어떤걸로 WPF 프로젝트를 시작해야 할까요?
→ 개인적으론 WPF는 코어 이상으로 넘어가지 않고 최신 버전의 닷넷 프레임워크로 진행해도 좋다고 판단합니다.
WPF는 어차피 윈도우 전용 이기에 코어 이상에서 멀티 플랫폼 관련 장점은 없고
말씀하신 기타 외부 라이브러리 호환성이 아직까진 닷넷 프레임워크 이상 지원이 더디고 있는 것이 현실입니다.
* 다만 최신 C#언어 스펙 문법을 사용하지 못하는 단점은 존재 합니다.
WPF는 다국어 배포는 어떻게 하나요?
→ WPF도 마찬가지로 다국어 테이블 형태로 관리 합니다.
이를 지원해주는 것이 리소스 형태로 관리할 수 있게 지원하고 있습니다.
각 언어별 리소스를 만들어 사용할 수 있고 xaml 또는 cs(코드비하인드)에서 리소스로 관리되는 해당 언어에 맞는 키로 접근해서 사용하 실 수 있고,
Thread.CurrentThread.CurrentUICulture
로 로드할 다국어 리소스를 정할 수 있습니다.
이 다국어 리소스는 빌드시 각 언어별 dll로 생성 됩니다.
디자이너와의 협업방식은 어떻게 될까요?
→ Blend 디자이너가 따로 있다면 완벽하게 xaml(뷰)를 디자이너에게 전담해서 분리 작업이 가능합니다.
하지만 국내에선 Blend를 다루실 줄 아는 UI/UX 디자이너 수요가 많이 없는 것이 현실 입니다.
Blend디자이너가 없는 곳에서는 보통.,
디자인/UX기획 가이드, 이미지등을 넘겨받아 개발자가 Blend 또는 VisualStudio 상에서
간단한 디자인 요소는 직접 Path등으로 가이드대로 작업을 하고
부분 이미지를 디자이너에게 파일로 받아서 이미지로 디자인을 하기도 합니다.
해상도는 요즘 사용자들의 개인 장비들이 워낙 스펙이 늘고 있는 추세로 일반적인 해상도 기준으로 작업 하셔도 될 것 같습니다. Grid, ViewBox등 컨트롤을 이용하면서 진행하시면 큰 문제는 없을 것 입니다.
답변 감사드립니다. 기간이야 개발될때까지 해봐 이런건 아니라서 아주 넉넉한건 아니겠지만 그래도 어느정도 타협은 할수 있을 것 같네요.
카메라를 사용 하기때문에 실시간으로 뿌려주긴 합니다만 꼭 60FPS 이상이여야하는건 아닙니다. 그리고 다른쪽이래봤자 원래하던 MFC가 아니라면 새로 학습해야하는건 비슷하지 않을까요? opencv 닷넷 라이브러리 문제는 확인해봐야겠네요!
닷넷은 어느 UI 프레임웍을 사용하느냐에 따라 개발방식이 많이 차이 납니다.
Windows Forms 개발하시던분들 중 상당수는 WPF개발에 어려움을 겪고 있고요.
그러니 어차피 배우는건데 비슷하지 않냐? 는 틀린 답 입니다. MFC 개발 하시던 분들도 거의 비슷하게 어려움이 있고요. 이건 어쩔 수 없습니다. 언어도 많이 틀리지만 UI처리 방식도 엄청나게 차이가 나는 부분이라서요.
그래도 WPF를 기왕 하실거라면 MVVM을 죽어라 보시기 바랍니다. MVVM없이도 개발은 가능한데. 그리 개발하면 의미가 없지 않나 싶네요.
안녕하세요. 제가 WPF로 넘어올때랑 비슷한 느낌을 겪고 계신것 같아서 몇자 적어보려고 합니다.
저는 C++/MFC 8년을 하고 C#으로 넘어와서 Winform 1년 → WPF로 온지 3년째입니다.
저는 자동화 장비를 만들고 있어서 모션제어, 카메라제어, OpenCV 비전 알고리즘도 개발하기 때문에 유사한 점이 많네요.
일단 저는 디바이스의 라이브러리 호환성 때문에 닷넷 프레임워크 4.7.2로 개발하고 있습니다.
(OpenCVSharp 4.5.2 쓰고 있습니다)
제가 Winform 으로 했을 때 가장 답답했던 문제는 대용량 이미지(Ex : 라인스캔 이미지 영상)을 화면에 출력하고 Zoom In/out을 할 때 굉장히 시간이 오래걸리는 현상이었습니다. WPF와서는 말끔하게 해결했네요.
Winform으로 이미지 한장을 통재로 그리는 방식을 WPF에서 Canvas에 라인스캔 구간 별 이미지를 위치
포지션을 주고 ItemsControl로 그리는 방식을 썻습니다.(객체가 많으면 DirectX 컨트롤을 써서 덧그렸습니다)
100,000 x 100,000 pixel을 Display하고 Zoom처리를 해도 부하도가 적습니다.
다국어 배포는 자체적으로 언어변환기를 만들어서 언어별로 리소스파일을 생성하여 배포하고 컨트롤에서 언어 선택하면 해당 리소스 파일을 읽을 수 있도록 처리하여 Application 구동중에 실시간으로 변경할 수 있게 했습니다.
총체적으로 말씀드리자면… 꼭 WPF로 넘어가시길 추천드립니다. 대신 혼자 독학은 정말 힘듭니다.
특히 MVVM 패턴으로 하실 게 아니면 그냥 Winform 쓰는거랑 마찬가지라고 생각하셔도 됩니다.
꼭 소수라도 같이 스터디 할 사람을 구해서 같이 하는 게 좋습니다.
여긴 고수 분들도 많으니 C언어 처음 공부한다는 생각으로 꾸준히 하시면 반드시 좋은 결과 있으시리라 생각합니다^^
답변 감사합니다! 안그래도 책도보고 강의도보고 하면서 MVVM 패턴에 대해 익숙해지고 있는 중입니다 ㅠㅠ 쉽지 않네요.
특히 MVVM 패턴 공부하면서 “아니 이거 하나 표시하는데 이렇게 까지 해야해?” 부터 “그냥 불러다가 쓰면 안돼나!?” 라는 생각까지 별 생각이 다들면서 헤쳐나가고 있습니다 ㅋㅋㅋㅋ MFC를 쓰던 버릇도 있고 협업개발은 거의 한적이 없어서 제멋대로 했던게 이제와서 골치가 아픈것 같습니다.
저도 display영역이 걱정되었는데 직접 경험담을 말씀해주셔서 안심이 되네요. 기왕 하기로 한거 끝까지 해보려고 합니다~!
제가 답변이 될진 모르겠지만 현재 상황 공유드립니다.
안그래도 이번 프로젝트하면서 디자이너에게 Blend 알려주면서 천천히 UI 그리도록 요청해보았는데요.
일단 기본적인 레이아웃 패널에 대한 개념이 없는 상태에서 그리기만 하는거는 결국엔 제가 Grid 다시 그리고 Stack panel로 변경하고 margin 다시 잡고 하는 상황이 되더군요 ㅠㅠ
또 저는 당연히 xaml 코드를 보고 코드를 수정했지만 디자이너분은 코드를 잘 안보고 인터페이스로만 변경하려다 보니 저도 Blend 인터페이스로는 Grid를 어떻게 나누지? 라는 고민에 빠졌었습니다 ㅎㅎ
서두가 길었지만 디자인만 하시는 분이시면 갈길이 멀겠다는 생각이 들었습니다. 그래도 전에 방식은 adobe xd로 작업한걸 제가 보고 UI로 옮기는 작업이였다면 최소한의 레이아웃이 잡혀있는 xaml에서 시작하니까 낫긴 하더라구요.
앞으로 계속 wpf xaml로 작업할거니까 배웠으면 좋겠다고 열심히 설득하는 중입니다 ㅋㅋ
맞습니다.
솔직히 디자이너한테 블랜드 배우라고 요구하는건 미국이라면 모를까
국내에서는 매우 미안한 행동이라고 봅니다.
써먹을곳이 정말 한정적인 기술을 나 편하자고 배우라는건데요.
그냥 png이미지라도 잘 잘라주고 거기에 뭐가됬던 이펙트 같은거까지 잘 보여주기만 해도 감사합니다.
이것도 못하거나 안해주는 디자이너가 수두룩 빽빽하거든요.