プログラミング言語や環境設定を中心としたパソコン関連の技術メモです。
主にシステム開発中に調べたことをメモしています。TIPS的な位置付けで、気が向いたときにちまちま更新していきます。
C#、「テキスト、アプリ、その他の項目のサイズを変更する」が100%以外の場合(高DPI)のレイアウト崩れに対応する
結論から書くと

1.「アプリケーション マニフェスト ファイル」を追加する
2.「1」で作成したファイルの中身を以下の内容で置き換え
<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>

することで「テキスト、アプリ、その他の項目のサイズを変更する」の設定値が125%でも150%でも
100%時のレイアウトを維持して表示することができました。

それでは詳細……と言うほどでもないですが詳細を書いていきます。

C#で作ったWindowsフォームがですね。
知人のノートPCで見るとレイアウトが崩れてしまうのです。
私の画面だと普通に見えるんだけど、なんで(--?というのが今回のきっかけです。

ほんで、あれやこれやと調べたところ……と言いたいところですが、
別に私が調べたわけではありません。
知人が調べてくださいました。
ありがとうございます。

知人が調べてくださったところによると
デスクトップを右クリック→「画面の解像度」を選択して出てくる画面の
「テキスト、アプリ、その他の項目のサイズを変更する」とか
「テキストやその他の項目の大きさの変更」と書いてあるところのパーセントが
100%だと崩れないけど125%とかだと崩れると分かりました。

ちなみに、ここで設定する内容は専門用語で「DPI」と言うそうです。
125%とか150%にした状態を「高DPI」とか「High DPI」と表現するみたいですよ。

ほんで、この高DPIにC#で作ったWindowsフォームを対応させたい!というのが今回のお題です。

どうすれば良いの?教えて!Google先生!

……ふむふむ(--)
プロジェクトに対して

1.「アプリケーション マニフェスト ファイル」を追加しする
2.「1」で作成したファイルの中身を以下の内容で置き換え
<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>

とすれば、高DPIでも100%時のレイアウトが維持されるそうです。

ここを参考に……というよりは答えそのものが載っていましたφ(--)

■Windows フォーム アプリの DPI Aware への変更
https://code.msdn.microsoft.com/windowsapps/Windows-DPI-Aware-e758cbbb

とても助かりました。
ありがとうございますm(__)m

ほんで、その手順にしたがって修正したら、
DPIの設定が100%でも125%でも150%でも同じレイアウトで表示されるようになりました。

やったねっ\(--)/
スポンサーリンク
 
このエントリーをはてなブックマークに追加 

category:● C#  thema:システム開発 - genre:コンピュータ  Posted by ササキマコト 

  関連記事