このページの本文へ

前へ 1 2 次へ

Windows Info 第24回

Windowsと高DPIディスプレイ【その2】 8.1では異なるDPIを設定可

2014年06月18日 12時00分更新

文● 塩田紳二

  • この記事をはてなブックマークに追加
  • 本文印刷

ディスプレイごとのdpi設定を試す

 このようにDPIが表示されないので、ディスプレイごとのDPI設定値を表示できるアプリケーションを使ってみた。使ったプログラムは、WPF(Windows Presentation Foundation)のサンプルプログラムとして配布されているもので、Visual Studio 2013でコンパイルして利用する(実行可能なバイナリの提供はない)。

 これを使って、スライダの位置と各ディスプレイのdpi値などをまとめたのが、前ページの表なのである。なお、この構成にさらにUSB接続の外部ディスプレイを追加してみたが、そのdpi設定値は96dpiに固定されてしまい、スライダの段階も変わらず5段で内蔵と外部ディスプレイのDPI設定値も同じだった。

 2つのディスプレイが異なるdpi設定を持っている場合、ウィンドウがディスプレイ間を移動すると、ウィンドウが半分以上入った側のdpi値が有効になるため、ウィンドウのサイズが急に変わることがある。これは、アプリケーションによって理由が違う。まず、XPまでの解像度を無視するアプリケーションの場合、WindowsによるDPI仮想化が行なわれ、96dpiの環境でウィンドウが作られる。しかし、ウィンドウの描画は、96dpiのディスプレイに表示したときと同じ論理インチになるように調整されるため、異なるDPI値を持つディスプレイへウィンドウを移動させると、自動的に拡大縮小がなされるわけだ。

 システムDPI値を利用してウィンドウサイズなどを決めているアプリケーション(System DPI Aware)は、自身の描画はシステムDPI値に基づいて行なう。しかし、ディスプレイごとにDPI値が異なる場合、やはりWindowsがウィンドウの拡大縮小を行ってサイズを調整する。これに対してディスプレイごとのDPI値に対応したアプリは、ウィンドウが半分を超えた段階でDPI値変更の通知を受ける。これにより、アプリケーションは、自身の表示サイズを変更する。

システムDPI値やディスプレイDPI値を表示するWPFのサンプルプログラム。右側は小さく見えるが実際には24インチディスプレイに表示されており、大きさの差はあまりない

前へ 1 2 次へ

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン