! 제품 버전을 정확하게 입력해 주세요.
제품 버전이 정확하게 기재되어 있지 않은 경우,
최신 버전을 기준으로 안내 드리므로
더욱 빠르고 명확한 안내를 위해
제품 버전을 정확하게 입력해 주세요!

WinForms .NET 5을 위해 High DPI 리본 만들기 > 블로그 & Tips

본문 바로가기

ComponentOne

블로그 & Tips

WinForms .NET 5을 위해 High DPI 리본 만들기

페이지 정보

작성자 GrapeCity 작성일 2021-04-09 14:25 조회 5,361회 댓글 0건

본문

ComponentOne 2020v3 릴리스에서는 가장 수요가 많은 ComponentOne 컨트롤을 .NET 5 프레임워크에 도입하는 데 초점을 맞추었고, WinForms Edition에 흥미로운 새 기능을 추가하였습니다.

그러한 기능 중 하나는 C1Icon에 기반을 둔 C1Ribbon의 High DPI 지원입니다.


C1Ribbon: High DPI 지원

새로운 C1Ribbon 컨트롤은 다양한 요소 상태 또는 다양한 요소 크기의 개별 리본 요소에 표시되어야 하는 아이콘을 C1Icon 개체 집합을 사용해 정의합니다. 예를 들어 16x16의 요소 크기에 대해서는 작은 기호 아이콘을, 32x32 요소 크기에 대해서는 더 큰 png 이미지를 지정할 수 있습니다. 또한 다양한 크기의 큰 이미지가 필요할 수 있는 High DPI 모드에서 사용할 벡터 아이콘(선택 사항)을 지정할 수 있습니다.

C1Icon은 색조 및 크기를 조정할 수 있는 단색 아이콘을 지정할 수 있게 해주는 일련의 클래스입니다. 이러한 아이콘은 컨트롤에서 내부적으로 사용되는 것으로 간주되며 고객이 컨트롤의 API를 통해 다양한 아이콘을 지정할 수 있게 해줍니다. 가능한 소스는 글꼴, 벡터(경로 또는 SVG) 및 이미지입니다.

API 지원

최신 릴리스에서는 고해상도 DPI 모니터에 대한 지원이 현재 WinForms용 C1Ribbon의 일부로 기본 제공됩니다. High DPI를 지원하므로 이제 C1Ribbon을 사용해 품질 손실 없이 High DPI 장치에서 볼 수 있는 WinForms 응용 프로그램을 개발할 수 있습니다.

따라서 배율 설정이 100%가 아닌 시스템에서 응용 프로그램이 실행되는 경우 적절히 배율이 조정됩니다.

 High DPI 지원

 High DPI 지원 안함


  


배율 조정을 활성화하는 방법에 관한 세부 정보를 살펴보기 전에 DPI란 무엇이고, 왜 중요한지 간단히 알아보겠습니다.


DPI 및 디스플레이 배율 계수

인치 당 도트 수(DPI)는 기술적으로 인치당 프린터 도트 수를 뜻하는 공간 인쇄의 단위입니다. 특히 폭이 1인치 이내인 선에 배치할 수 있는 개별 도트의 수를 가리킵니다.

대부분의 레거시 데스크톱 UI 프레임워크에는 디스플레이 DPI가 프로세스 수명 중에는 변경되지 않을 것이라는 가정이 기본적으로 깔려 있습니다. 하지만 각 디스플레이가 서로 다른 배율 계수를 가지고 원격 데스크톱을 통해 High DPI 랩톱/태블릿에서 Low DPI 장치 등에 접속하는 다중 모니터 설정과 같은 시나리오에서는 디스플레이 DPI가 변경되는 일이 흔하므로 이러한 가정은 더 이상 유효하지 않습니다.

이러한 시나리오에서는 DPI 배율 조정이 완료되지 않으면 응용 프로그램이 흐릿하게 보이거나 크기가 부정확해집니다.


배율 조정 활성화

배율 조정을 활성화하려면 응용 프로그램을 DPI 인식으로 선언하기만 하면 됩니다. 그러면 C1Ribbon이 현재 DPI 설정에 따라 UI 요소의 크기를 자동으로 조정합니다.

대상으로 지정된 .NET 프레임워크에 따라 두 가지 이상의 방법으로 배율 조정을 활성화/비활성화할 수 있습니다.

대상 프레임워크가 .NET v4.7 이상이고 Windows 10 Creators Update로 시작하는 Windows 운영 체제에서 이 프레임워크를 실행하는 경우 몇 줄의 코드로 app.manifest 파일 및/또는 app.config 파일을 추가해야 합니다. 이에 관해서는 MSDN에 자세히 설명되어 있습니다.

하지만 대상 프레임워크가 .NET Core 3.0 이상인 경우에는 app.manifest 및 app.config 파일이 필요 없습니다. .NET Core 3.0부터 Microsoft는 Windows Forms에 대해 High DPI 모드를 설정할 수 있는 새로운 방법을 도입하였습니다. Application.SetHighDpiMode(HighDpiMode)라고 하는 정적 메서드가 그것입니다. 이 메서드에서 HighDpiMode는 열거이며 DpiUnaware, SystemAware, PerMonitor, PerMonitorV2, DpiUnawareGdiScaled라는 값을 갖습니다.

Application.SetHighDpiMode(HighDpiMode.PerMonitorV2);


DPI 인식 모드

DPI 인식 모드는 고해상도 화면에 표시될 때 응용 프로그램이 표시되는 방식을 지정합니다.

 DPI 인식: 활성화됨

 DPI 인식: 비활성화됨

 

 


아래 표에서는 ‘HighDpiMode’ 열거에 사용할 수 있는 다양한 값을 공유합니다.

항목설명
DpiUnaware0응용 프로그램 창이 DPI 변경에 맞게 배율 조정되지 않고 항상 100%의 배율 계수를 유지합니다.
DpiUnawareGdiScaled4DpiUnaware와 유사하지만 GDI/GDI+ 기반 콘텐츠의 질을 높입니다.
PerMonitor2창은 생성되는 시점에 DPI를 확인하고 DPI가 변경되면 배율 계수를 조정합니다.
PerMonitorV23PerMonitor와 유사하지만 하위 창 DPI 변경 알림을 활성화하고, comctl32 컨트롤의 배율 조정을 개선하였고, 대화 상자 배율 조정이 가능합니다.
SystemAware1창은 기본 모니터의 DPI에 대해 쿼리를 1회 수행하여 이 DPI를 모든 모니터의 응용 프로그램에 사용합니다.


결론

DPI 배율 조정이 필요 없는 수준부터 배율 조정이 점점 더 중요하게 된 수준까지 디스플레이 기술이 발전함에 따라 수천 개의 응용 프로그램이 WinForms를 사용해 작성되었고, WinForms 기술은 계속 발전해 왔습니다. 따라서 현재 WinForms는 양질의 High DPI 지원을 제공하고 있으며, C1Ribbon을 이용해 최신 Microsoft Office 2019 스타일 응용 프로그램을 원활하게 작성할 수 있습니다.


  • 페이스북으로 공유
  • 트위터로  공유
  • 링크 복사
  • 카카오톡으로 보내기

댓글목록

등록된 댓글이 없습니다.

메시어스 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기

태그1

메시어스 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기
이메일 : sales-kor@mescius.com | 전화 : 1670-0583 | 경기도 과천시 과천대로 7길 33, 디테크타워 B동 1107호 메시어스(주) 대표자 : 허경명 | 사업자등록번호 : 123-84-00981 | 통신판매업신고번호 : 2013-경기안양-00331 ⓒ 2024 MESCIUS inc. All rights reserved.