Windows 포맷의 Hi-DPI(Hi-DRI) 대응 팁

3172 단어 WinFormsC#
개시하다
Windows에서 사용할 수 있는 Hi-DPI(Hi-DPI)에 대해 가능한 한 간단하게 대처할 수 있는 노하우를 정리했다.
Windows 창의 자동 크기 조절 기능을 사용합니다.
이번에 안 하는 거.
다음 기능.NET Frame Work4.7은 지원되지만 설치 비용이 많이 들기 때문에 지원되지 않습니다.
  • 부팅 중인 DPI 변경 지원(Dynamic DPI)
  • 모니터별 DPI 지원(Per Monitor DPI)
  • 대응 방법
    응용 프로그램 선언 설정
    프로젝트에 응용 선언문건app.manifest을 추가하고 아래 설정을 기입합니다.
    이 설정은 Windows에서 지원되는 고DPI로 인식되므로 흐려지지 않습니다.
    app.manifest
    <application xmlns="urn:schemas-microsoft-com:asm.v3">
      <windowsSettings>
        <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
      </windowsSettings>
    </application>
    
    폼에 일련의 고DPI 설정
    양식을 디자인할 때 Visual Studio가 DPI 100% 모드로 시작됩니다.
    고DPI 환경에서 개발할 때 창 디자이너를 열면 다음과 같은 내용이 표시됩니다.
    Visual Studio를 100% 비율로 다시 시작하도록 매번 선택하십시오.
    그렇지 않으면 제어 구성이 DPI 100% 환경에서 충돌을 일으키는 전제 조건이 됩니다.
    ※ DPI 100% 환경개발 시 아무것도 하지 않아도 OK

    AutoSccalleMode 속성을 Dpi 모드로 설정합니다.
    창의 AutoScaleMode 속성을 Dpi 모드로 변경합니다.AutoScaleMode 속성은 Windows 창이 갖추고 있는 자동 축소 기능을 제어하는 행위입니다.
    기본Font 모드에서는 DPI 배율이 아니라 글꼴 크기를 기준으로 배율이 조정됩니다.
    픽셀 단위 좌표를 처리하는 처리가 있으면 Font 모드가 적용되지 않습니다.
    디자이너의 행동에도 이상한 영향이 있으니 사용하지 않는 것이 좋다.
    형식적인 Font이 Yu Gothic UI인지 Meiryo UI인지.
    MS UI Gothic, MS P Gothic 등 비트맵 섹션을 포함하는 글꼴은 높은 DPI 환경에서 레이아웃이 붕괴될 수 있습니다.
    Yu Gothic UI, Meiryo UI 등 비트맵 섹션이 포함되지 않은 글꼴을 사용합니다.
    글꼴을 변경할 때AutoScaleMode 유지Font하면 전체 글꼴의 크기가 변경됩니다.
    픽셀 단위를 조작하는 곳에 계수를 가하다
    이전 설정에서 거의 모든 제어는 DPI를 자동으로 제어하지만 일부 제어(DataGridView의 열 너비 등)와 드로잉 처리에서는 별도의 높은 DPI가 필요합니다.
    96dpi 대비 현재 DPI 비율을 수정해야 할 부분에 곱하기 위해 다음 코드를 사용합니다.
    대응하는 곳을 찾으려면 시도와 오류가 필요할 수도 있다.
    static readonly float DpiScale = ((new System.Windows.Forms.Form()).CreateGraphics().DpiX) / 96;
    
    총결산
    Windows 창 응용 프로그램은 일반적으로 고DPI를 지원하지 않는 것으로 간주됨
    노하우를 터득하면 표준기능에 맡겨도 잘 대응할 수 있다.
    졸작 Ssid WallpaperChanger는 이 방법으로 고DPI 대응을 진행해 소스를 공개했다.
    https://github.com/mono1729/SsidWallpaperChanger

    좋은 웹페이지 즐겨찾기