[ヘルプTop] [戻る]高解像度ディスプレイ環境での制限
高DPI環境と通常DPI環境との連携で、現在判明している制限事項を説明します。
(他にもバグと思われるような現象がありましたら操作手順と環境情報をご提供ください) Windowsには、以前より様々な高解像度ディスプレイ環境への対応をしておりますが、残念ながら実装当時の時代に合わせた仕組みなので、現在では全てのモードが中途半端で完成度の低いものとなっております。 例えば、マルチモニタを考慮してなかったり、解像度の異なるマルチモニタを考慮していなかったり、大規模なアプリケーション側の負担を考慮してなかったりと様々な制限があります。 オプションの「互換性」で切り替えることが可能になっておりますので、こちらも参照ください。 なお高DPI環境とのミックスは、Windowsの本体も表示が崩れるシーンが多々あるので(執筆時点のWindows 11 24H2で確認したのは、タスクトレイのポップアップ表示が半分で切れる、チップヘルプ等が画面外に行く、ポップアップメニューが画面外にはみ出すなど)Vista時代から始まったこの流れを長い目で見守る必要があるものと考えております。 今後とも継続して検討していきますので問題が解消される可能性もありますが、解決をお約束できるものではありません。 ※補足1 DPI比率の説明もしておきます。 DPIとは1インチあたりの、ドット(画素)数を指し、これをX座標/Y座標並べて表記するものとなります。 DPIが96×96を通常環境と呼び、画面の拡大率が100%になっています。 それに対して、一般的に高DPI環境は100%以上の環境であり、150%なら144×144、200%なら192×192という値になります。 もともとWindows自身が、96×96にしか対応しておらず、Windows自身の対応も二転三転しており(Vistaで1回、Windows8.1で1回、Windows10で2回の仕様変更)、そのためアプリ側の対応も年単位で遅れがちになっているというものです。 現行の言い回しは厳密な意味からは乖離しておりますので、ご注意ください。 ※補足2 Windowsの持つスケーリング機能に関しては、オプションの「互換性」にて説明しています。 ※補足3 下記の制限事項はディスプレイドライバや、ハードウェアによって、再現しない場合もあります。 「制御なし」での表示の崩れ
ありません。
ただし、極端に小さく表示されたり、文字や画像の滲みがひどい状態になる場合が多々あります。 「システム」での表示の崩れAs/Rでコツコツ実装してきた高DPI対応をしたものとなります。ライブラリの不具合により対応不能な不具合が出てきたため、時代の趨勢によって廃止する可能性を含んでいるものとなります。 まれに「システム」が機能しない環境があります。 設定不能の場合は、オプションの設定はそのままに、自動的に「制御なし」に切り替わる場合があります。 ツールバー画像が滲む
無理やり引き延ばした状態になりますので、かなり滲みます。
ツールバー画像の描画はライブラリ内部での処理ですので、改善不能です。 サムネイル画像が小さくなる
DPIの倍率を掛けることができないため、サイズが小さくなってしまいます。
対応方法が思いつきましたら、この制限をなくしたいと考えています。 ツールバー画像エディタで作成した画像サイズが巨大化する(ライブラリの中の話)
DPIの比率が高い環境では、ツールバー等の「カスタマイズ」で画像の「新規作成」や「編集」ボタンを押下すると、メッセージを表示して処理の継続を拒否します。
これはライブラリのバグで、画像編集をすると巨大なサイズの画像を生成し、アプリが起動できなくなる場合がありえるためです。 ドッキングウィンドウのサイズが小さくなる場合がある(ライブラリの中の話)
非表示の状態で解像度が変わった場合にDPI比率を掛けることができませんので、サイズが小さくなります。
対応方法が思いつきましたら、この制限をなくしたいと考えていますが、ライブラリの中の話なので対応に苦慮しています。 「GDIスケーリング」での表示の崩れ残念ながら「GDIスケーリングモード」自体が、Windowsの機能としても中途半端です。過去例に見ないほど後方互換性を持っていますが、まだまだ足りていない機能です。 執筆時点では、かなりポンコツな仕組みと言わざるを得ませんし、情報の公開レベルが全然足りていません。 また、いくつか「GDIスケーリング」が機能しない環境があります。 以下の環境を検出した場合は、オプションの設定はそのままに、自動的に「システム」に切り替わる場合があります。 さらに「システム」にも切り替えることができなければ、「制御なし」になります。 ・ポリシーで禁止されている ・親プロセスからスケーリングポリシーを継承した デスクトップやショートカットは、エクスプローラーが親プロセスであり、こちらのOS設定の影響を受けることがあります。 ・DPI比の異なるディスプレイ間で運用した ・リモート環境で実行した、またはリモート環境で作られたショートカットから起動した メインメニューの文字が滲む
ライブラリがハードウェアに直接描画しているので滲みます。
メインメニュー自体が廃止予定の機能なので、将来的にこの制限はなくなる想定です。 サムネイル画像でテキストを表示させる場合に滲む
テキストを描画した上でOS側の制御で拡大縮小が発生しているため、かなり滲んでしまっています。
ファイル名の部分と比較してみると分かりやすいと思います。 ![]() ※描画ロジックの抜本的に変更することを検討しています。 サムネイル画像を生成して一覧に埋め込むのではなく、性能を代償にテキストを直接描画するとか・・・ プレビューバーのレイアウトがおかしい
プレビューバーの表示は、OSの持つプレビューハンドラに関連付けされたコンポーネントに丸投げして表示させております。
このプレビューハンドラに旧式のメディアプレーヤーが関連付けられている状態で問題が発生します。 この旧式のメディアプレーヤーは、Microsoft社様も廃止を検討しているものであり、GDIスケーリングモードに対応していないことが原因です。 (OS側が廃止予定の旧式のコンポーネントを紐づけていること自体がバグのような気がしますが・・・) スクリーンショットは動画に「旧式のメディアプレーヤー」を紐づけている画像でして、表示がおかしくなっているのが分かると思います。 ですのでコンポーネント次第で中央にレイアウトされないことがある、という制限になります。 ![]() ※エクスプローラーと同じように、プレビュー上での動画再生を不可にし、サムネイル画像を表示する方向で検討しています。 ※旧式のメディアプレーヤーをアンインストールすることで発生しなくなりますが、Windowsの関連付け情報の補正の挙動が極めて怪しいので(Windows 11 24H2)執筆時点はお薦めいたしません。 また旧式のメディアプレーヤーしか対応していない形式も残っているため、再生できないメディアが複数発生します。 高DPI環境から通常DPI環境へ移動した場合の表示が崩れる
ウィンドウ管理バーでのみ発生します。
表示テキストが黒くなってしまい、ダークモードの場合は何が書いてあるのか分からない状態になります。 (デフォルトテーマも文字全体が黒っぽくなるので、見苦しいです) ウィンドウ管理バーのウィンドウサイズを変更すると表示が適切な状態に戻ります。 具体的には、ウィンドウ管理バーを縦置きにした場合はメインウィンドウを縦方向のサイズを、横置きにした場合はメインウィンドウを横方向のサイズを動かすと表示が元通りに戻ります。 なお、残念ながらこの描画崩れの発生タイミングを捕まえること、また発生している状態が判別できないため改善のめどが立っておりません。 ![]() ※現状は、改善方法のめどが立っていません。 再描画しても効果がなく、当方で制御している処理では正しい色で塗っていることが確認できているだけに困っています。 おそらく、座標系が根本的に狂っているように見受けられますが定かではありません・ 各種ドッキングバーをフローティングさせた場合の座標がおかしい
ランチャ、お気に入り、タブなど、各種のドッキングバーを分離してフローティングさせ、DPI比率の異なるディスプレイに、ウィンドウへドラッグしてウィンドウを動かした場合の座標がマウスカーソルの位置と一致しません。(DPI比率に応じて位置がずれる)
またメインウィンドウにくっつける際の、ドッキングアシスタントの表示座標も同様にずれますので、ドッキングバーの分離と結合操作は同一ディスプレイ内で行うようにすることをお薦めします。 わりと、プレビューバーを別ディスプレイに表示するといった事をやりがちですので、ご注意ください。 ※この辺りはライブラリがすべて管理しており、私の方でコーディングしているものではありませんので、おそらく対応不能です。 ライブラリの更新に期待します。 ウィンドウを最大化した状態で、最小化/元に戻すを実行するとステータスバーの描画が崩れる
主に右端のアイコンやモード表示のレイアウトがずれますが、対応不能です。
内部的に描画座標の数値は間違ってないので、おそらくWindowsの不具合だと思っています。 |