VC PlusPlus:高DPI対応

提供:yonewiki
2022年9月26日 (月) 09:10時点におけるYo-net (トーク | 投稿記録)による版 (ページの作成:「VC PlusPlusに戻る == '''概要''' == 近年のパソコンの画面は小さい画面でありながらも高精細な描画をする目的でDPI(DotPerInch)が大きくなっています。つまりは1インチという実際の距離に存在する画面上のdotの数が多くなっているということです。微細化がすすんでいるということですね。一昔前であれば、96DPIという値が強制的に利用されていました…」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)

VC PlusPlusに戻る

概要

近年のパソコンの画面は小さい画面でありながらも高精細な描画をする目的でDPI(DotPerInch)が大きくなっています。つまりは1インチという実際の距離に存在する画面上のdotの数が多くなっているということです。微細化がすすんでいるということですね。一昔前であれば、96DPIという値が強制的に利用されていましたが、96DPIのままではうまくいかないようなディスプレイが登場し、例えばスマートフォンでFullHDに対応するなど技術的な進歩がありました。このようなスマートフォンで使われていたディスプレイの技術は徐々にノートパソコンやタブレットでも利用され、ディスプレイが96DPIを基本としていない構造になったという感じだと思います。


高DPIにもかかわらず、従来の96DPIの表示を基準とした文字サイズや画像サイズを利用していると、文字が小さすぎたり、画像が小さすぎたり、ウィンドウが小さすぎたり、ボタンサイズが小さすぎる、あるいはアイコンが小さすぎるという状態になります。そこで、スマートフォンなんかでは、従来のパソコンを基準に考えるとパソコン画面の設計のものを拡大して使ったりすることが基準となりました。開発者がスマートフォン用のOS向けに画面設計するし、デバイス設定が違うし、特に問題は発生しませんでした。Androidとか、iOS モバイルとかですかね。


そして、ノートパソコンや、タブレットでWindowsを使い続けている側として、高DPIが登場すると小さすぎる問題は画面の拡大で対応することにしたのですが、Windowsに搭載された従来の既存アプリの拡大技術ってのはやっぱしょぼくって、結局のところ、文字や画像がぼやけたりするという問題が発生したのであります。そうすると開発者側が高DPIの時代に対応するために、実施しなければならないことが増えたのです。96DPIじゃなくて、実際のDPIをOSに教えてあげてください。お願いします。そういうことらしいです。画面の大きさによっては96DPIの設定のままでも支障ないから、Windows側では勝手にアプリの設定をいじるのはやめて、スケール表示を何倍にするかという設定だけがあたえられたのです。


なんでかは知りません。96DPI基準で作ったアプリだから開発者の意図を勝手に曲げてはいけないということなのでしょうか?いろんなアプリがあるし、仕事用とか人命にかかわるアプリなら支障があるし危険なのかも。画像サイズとピクセル位置情報で演算処理を行ったり分析したり…予期しない動作。怖いです。


それで、アプリ側がOSに高DPIに対応しますと宣言するとか、デバイスに対応しますとかという宣言、あるいは、アプリがデバイスのDPI値を取得して、それに合わせて画面作りの設定をしなおすといういくつかの方法を開発者側で実施せよ。そういうことらしいのです。


アプリの利用者側でも、高DPIで起こる問題に対処するための、いくつかの設定が選択できるよう用意されていますが、開発者ほど柔軟な対応はとれないと思います。Microsoftのタナカタツヤさんという人が、開発者向けに高DPI対応をとって下さいとアナウンスもしているようですが、マイクロソフトジャパンの発信する情報にアンテナを張り巡らしている人ばかりではないので、多くの人には気づかれていないでしょうか。


で、VisualStudioを使って開発している場合は簡単な設定でOS側に高DPIの対応を受け入れますと宣言ができるようになっています。

手順その1

VisualStudio2015の場合

  • プロジェクトのプロパティを開きます。
  • 項目[マニュフェストツール]を選択します。
  • DPI認識という項目があるので、その設定値のドロップダウンリストから「モニターごとの高い DPI 認識」あるいは「高いDPI認識」を選択します。
  • ビルドあるいはリビルドあるいはバッチビルドするなどして、実行ファイルを生成します。
  • 生成されたアプリを実行すると、高DPIに認識した基準の画面になっていることが確認できます。