GDI와 비교해도 GDI+(System.Drawing)는 끔찍하게 느립니다.
GPU 가속 없이 CPU 자원만을 쓰기 때문이죠
GDI+는 고수준 API를 제공하지만 매우 느립니다.
MS는 대체 무슨 생각으로 GDI+를 만든 걸까요?
요즘 컴퓨터 사양으로 화면 드로잉하는 과정이 눈에 보이면 참 안타까워요
C# GDI Wrapper Class 있나 찾아보다가 없어서 좀 실망…
자작하거나 2d2lib, SharpDX 써야 될 듯…
GDI+를 요즈음 (2022년) 내놨다면 “정말 무슨 생각으로 만든거지?” 였겠지만, 아시다시피 GDI+는 나온지 엄청 오래된 레거시 기술입니다. ![]()
위키피디아 언급으로 보면 Windows XP가 출시되던 2001년 후반에 공식화되었고, 제 기억으로도 그 무렵에 GDI+ 이야기를 들을 수 있었던 것 같으니 어느덧 출시된지 20년이 넘은 기술이네요. ㅎㅎ
Windows Forms 역시 그 당시 Windows 운영 체제에 맞추어 Visual Basic 6.0이나 MFC 애플리케이션에 맞추어 닷넷으로 비슷한 유형의 GUI를 개발하려는 니즈에 부합해서 만들어진 프레임워크였었죠. (실제로 VB6로 GUI를 개발하던 분들에게는 친숙한 모델이긴 합니다.)
저도 GDI+와 API 콜을 100% 맞추어서 호환성을 보장하는 3D 가속이 되는 2D 그래픽 프레임워크…를 Microsoft에서 만들어준다면 좋겠다고 생각합니다. 그렇지만 MS 또한 규모의 차이가 있을 뿐 그들도 우선 순위를 정해서 기술을 개발하는 만큼 GDI+에 3D 가속을 입히는 리노베이션은 단행하기 어렵지 않을까? 하는 생각이 듭니다.
20년 전에 GDI+ 썼다가 느려서 엿먹은 기억이 납니다.
지금은 대안이 많기 때문에 굳이 쓸 필요가 없어진 것 같아요
VB6, 윈폼과 함께 버려진 것이죠… 윈도폰도…
15년 전 듀얼코어 CPU에서 WinForms로도 충분히 미려하고 응답성 좋은 응용 프로그램을 개발할 수 있었습니다.
드로잉 과정이 눈에 보일 정도면 라이브러리를 잘 못 사용하고 있는 게 아닐까요?
유저컨트롤로 여러 view들을 만들어서 visible 속성으로 화면 전환하거나 탭컨트롤로 화면 전환하는 프로그램 작성했을때 화면에 여러 ui 컨트롤들이 있는 경우 더블버퍼링 속성을 줘도 그리는 과정이 살짝 눈에 보입니다.
이런건 되게 아쉽더라구요. 비슷한 ui 를 WPF 로 적성하면 그런 현상이 전혀 발생안합니다. 요즘 유행하는 키오스크 같은 프로그램을 짠다면 무조건 WPF 로 해야하겠더라구요.
몇 가지 짚을 것이 있어서 답글드립니다.
Windows Forms는 .NET 6 기준 현재 오픈 소스 프로젝트로 변경되어 꾸준히 개발과 업데이트가 이루어지고 있어서, "버려졌다"는 표현은 사실이 아니라고 생각하여 추가 의견 드립니다. (참고: GitHub - dotnet/winforms: Windows Forms is a .NET UI framework for building Windows desktop applications.)
그리고 기술의 발전이 더디고 답답한 것은 아쉬운 점이 있지만, 포럼을 찾아주시는 모든 분들에게 건설적인 정보를 전달할 수 있도록 적극적인 노력을 부탁드립니다. Microsoft의 제품 정책에 대해 아쉬운 점은 모두들 조금씩 가지고 계실 수 있지만, 공격적인 피드백은 건설적인 논의가 아닌 소모적인 논쟁을 촉발시키는 단초가 될 수 있습니다.
고맙습니다.
Winform은 버려지지 않았어요! ![]()
그리고 개인적으로 한 7~8년 전 쯤에 진행했던 프로젝트에서
GDI+로 실시간 그래프 표현 컨트롤을 제작했던 적이 있는데,
전~혀 버벅임 없이 잘 작동되었습니다.
심지어 지금과 비교하면 PC사양이 많이 낮았는데도 말이죠…
Paint관련 이벤트 처리와 객체의 생성/소멸을 어떻게 하느냐에 따라 결과가 크게 달라졌었던 기억이 나네요.
지금이야 Windows10, Windows11이 나와서 옛날 방식이라 치부될 수가 있지만
그때 당시 그걸로 먹고 사는 사람도 많았다는걸 감안하면, 결론은 그 기술을 사용하는 사람의 숙련도가 아닐까 싶습니다…
먼저 태클은 아니구요.
4K 환경에서는 느릴수도 있겠구나라는 생각이 들어서 댓글답니다.
테스트는 안해봤습니다.
Winform이 버려졋든 아니든
느낌은 알아서 고사 되겠지 하며 방치한 느낌을 지울수는 없군요…
음…
@zzxxrrr @windowmini
테스트는 안해봤지만 ~~할 수도 있겠다
혹은, 어떤어떤 느낌이 든다…
라는 것은 죄송하지만 근거없는 멘트 같습니다.
테스트는 안해봤지만 그냥 느릴 수 있을 것 같고… 윈폼이 고사되겠지…하는 느낌이 드는데 확신은 없고…
윈폼이 고사는 커녕, 제발 좀 그대로 방치해서 놔뒀으면 좋겠고 그만 좀 발전했으면 좋겠다고 매일 생각하는 사람입니다.
적어도 .NET 6, 7, 8 그리고 C# 버전 자체의 변화 흐름을 다 이해하신다면 모르겠지만
그게 아니라면 고사, 방치라는 표현은 닷넷, 적어도 윈폼은 거의 모르시는 것 같다는 느낌을 지울 수가 없네요…
저는 10년을 해오고 있어도 그 발전 속도를 따라가기가 너무 버겁거든요.
예전에는 gdi+ 로 게임도 만들어보고 컨트롤도 만들었었는데 성능을 높이는 방법의 중요한 부분은 화면에 변화가 있는 부분을 프로그래머가 직접 관리하고 그 부분만 그려야하는 부분이 가장 컷던거 같습니다. 그렇게만 하면 성능은 큰 문제가 되지 않았던 것 같아요.
물론 현재 하드웨어 가속을 사용하는 directx 같은 기술은 저런 관리가 없어도 기본 성능 자체가 매우 좋아서 구냥 순식간에 그려지긴 하죠