次の方法で共有


高 DPI ディスプレイに正しく表示する

Direct2D では多くの高 DPI の問題に対処できますが、アプリケーションが高 DPI ディスプレイで正しく動作するようにするには、2 つの手順を実行する必要があります。

手順 1: 作成後にウィンドウの独自の DPI を使用する

GetDpiForWindow 関数は、指定されたウィンドウのドット/インチ (dpi) の値を取得します。 この値を使用してウィンドウの幅を設定するには、次の式を使用します。

< Dpi>* <(ピクセル単位>/<既定の DPI)>

...ここで、DPIGetDpiForWindow によって再表示される値であり、既定の DPI は 96 (ヘッダーでUSER_DEFAULT_SCREEN_DPIwinuser.h定義) です。 数式は縦軸に似ています。

< Dpi>* <高さ(ピクセル単位>/<既定の垂直 DPI)>

単純な Direct2D アプリケーションを作成 する」の手順 2.3 のコード例では、ウィンドウの DPI を取得し、そのサイズを DPI にスケーリングして 640 × 480 に設定します。

Note

ユニバーサル Windows プラットフォーム (UWP) アプリの場合は、DisplayInformation::LogicalDpi プロパティを使用できます。

手順 2: アプリケーションが DPI 対応であることを宣言する

アプリケーションがそれ自体を DPI 対応として宣言する場合は、アプリケーションが最大 200 DPI の DPI 設定で適切に動作することを指定するステートメントです。 Windows Vista および Windows 7 では、DPI 仮想化が有効になっている場合、DPI 対応ではないアプリケーションがスケーリングされ、アプリケーションは GetSystemMetric 関数などのシステム API から仮想化データを受け取ります。 アプリケーションが DPI 対応であることを宣言するには、次の手順を実行します。

  1. DeclareDPIAware.manifest という名前のファイルを作成します。

  2. 次の xml をファイルにコピーして保存します。

    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" >
      <asmv3:application>
        <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
          <dpiAware>true</dpiAware>
        </asmv3:windowsSettings>
      </asmv3:application>
    </assembly>
    
  3. プロジェクトの .vcproj ファイルで、VisualStudioProject/Configurations の各 Configuration 要素内に次のエントリを追加します。

    <Tool
        Name="VCManifestTool"
        AdditionalManifestFiles="DeclareDPIAware.manifest"
    />