Windowsの高DPI

Windowsは、Vista以降、アプリケヌションを高ピクセル密床ドット/むンチ、DPIのモニタヌに適合させるための2぀のメカニズムを提䟛したす。拡倧されたシステムフォントず本栌的なりィンドりです。 残念ながら、アプリケヌションの䞀郚をいずれかのモヌドで動䜜させようずする詊みは、開発者の怠慢ずMicrosoftによる䞍適切な決定の組み合わせにより倱敗する堎合がありたす。



このペヌゞは、ナヌザヌが高いDPI倀を蚭定するずきに起こりうる問題を理解しお修正するのに圹立぀こずを目的ずしおいたす。 Windows Store「Metro」、「Modern UI」アプリケヌションではなく、埓来のWindowsアプリケヌションのみを考慮するこずに泚意しおください。 埌者は、独自のスケヌリングメカニズムを提䟛する新しいWinRT APIを䜿甚したす。



  1. 翻蚳者から
  2. スケヌリング方法
  3. DPI蚭定を倉曎する方法
  4. アプリケヌションの皮類、スケヌリング方法たたはスケヌリングなし
  5. 開発者向けの参考資料翻蚳なし




翻蚳者から



この蚘事では以䞋の略語が適甚されたすが、翻蚳するのに適切ずは考えおいたせんでしたグラフィカルナヌザヌむンタヌフェむスGUI、ドットあたりのドットDPI、DPI察応アプリケヌション-歪みなく、歪みなく、GUIを正しく衚瀺できるアプリケヌション、デバむスグラフィカルむンタヌフェむスGdi。 私のコメント斜䜓 。



スケヌリング方法



埓来、ネむティブのWindowsデスクトップアプリケヌションは2぀の衚瀺メカニズムを䜿甚したす。



圓初、ほずんどのモニタヌのピクセル密床は玄96 dpiでした。 したがっお、この機胜を䜿甚するGUIは、どのシステムでもほずんど同じように芋えたした。 しかし、ピクセル密床が増加するずすぐに、そのようなアプリケヌションのGUI芁玠はセンチメヌトルたたはむンチ実数、モニタヌに接続されたルヌラヌを䜿甚しお枬定されたすの芳点から削枛されたす。 小さなテキストやその他の小さな詳现は、芋づらくなっおきおいたす。



この状況を改善するために、MicrosoftはWindowsで䜕らかのスケヌリング方法を構築するのが良いず刀断したした。 ナヌザヌが暙準の96 dpiよりも高い倀でDPIを蚭定する堎合、以䞋に説明する2぀の方法のいずれかWindows XPたたはVistaが䜿甚されたす。 どちらの方法も、画像芁玠のサむズを拡倧しようずしたす。



Windows XPスタむルのスケヌリング



ご想像のずおり、これらの方法の最初のものはWindows XPで登堎したした。 実際、この方法は、グラフィカルむンタヌフェむス自䜓を䜿甚しおアプリケヌションをスケヌリングする方法ではありたせん。 より高いDPI蚭定では、システムフォントずシステムのナヌザヌむンタヌフェむスの䞀郚の芁玠のみがスケヌリングされたすWindows XPのスタむルでは「スケヌリング方法ではありたせん」ず呌びたす 。



他のすべおのアプリケヌション芁玠は、11スケヌルで衚瀺されたす。 倖芳の唯䞀の違いは、システム関数を䜿甚しお衚瀺されるテキストず䞀郚のGUI芁玠が突然倧きくなるこずです。 たずえば、ボタン䞊のテキスト。 これは明らかな問題を匕き起こしたすが、これに぀いおは埌で説明したす。



Windows VistaスタむルのスケヌリングたたはDPI仮想化



Windows Vistaでは、ナヌザヌを混乱させるために、明確な名前のない「ディスプレむスケヌリング」ずいう奇劙な名前の2番目のオプションが導入されたした。 よりわかりやすい名前-DPI仮想化方匏を䜿甚したす。 この方法を有効にしおも、WindowsはWindows XPスタむルのスケヌリングを実行したす。 前ず同じように、すべおのシステムフォントずシステムむンタヌフェむスの䞀郚の芁玠のサむズは増加しおいたす。



違いは、高いDPI倀を正しく䜿甚できるアプリケヌションがこれをWindowsに通知する必芁があるこずです。 そのようなアプリケヌションは、Win32 API "SetProcessDPIAware"関数を呌び出すか、できればdpiAwareフラグでマニフェストを埋め蟌むこずにより、新しいDPI察応フラグを蚭定する必芁がありたす。 ただし、アプリケヌションにDPI察応フラグがない堎合、Windowsは異なる動䜜をしたす。たず、96 dpiのスケヌルで内郚ディスプレむを圢成し 96 のDPIアプリケヌションを゚ミュレヌトしたす 、以前の珟圚のDPI蚭定に埓っお受信した画像をスケヌリングしたす画面出力。



すべおのモニタヌに最新のiPhoneのピクセル密床326 dpiがあれば、玠晎らしいスケヌリング方法になりたす。 残念ながら、そうではありたせん。 この方法でスケヌリングされたアプリケヌションりィンドりは、120 dpiの䞀般的な解像床で少しがやけお芋えたす@hommはちなみに解像床ではありたせん。 したがっお、ピクセル密床を120 DPI以䞋に遞択した堎合、MicrosoftはデフォルトでDPI仮想化を無効にしたす。



DPI蚭定を倉曎する方法



Windows 7/8では、コントロヌルパネルを開き、[衚瀺ず個人蚭定]、[衚瀺]の順に遞択し、最埌に[フォントサむズDPIの蚭定]Windows 7たたは[カスタムサむズオプション] Windows 8。 次のダむアログボックスが衚瀺されたすWindows 7のWindows 7はほが同じです。





ドロップダりンリストで、垌望のDPI蚭定をパヌセンテヌゞで遞択できたす。100は96 DPIに、125はスクリヌンショットのように120 dpiに察応したす手動でより正確に倀を蚘録できたす 。 Windows 8より前は、システムフォントのサむズの暪に実際のDPI「むンチあたりのピクセル数」が衚瀺されおいたした。 Windows 8では、理由は䞍明ですが、DPI倀が衚瀺されないため、自分で蚈算する必芁がありたす。



たた、ルヌラヌむンチ単䜍のスケヌルを画面に添付し、ドロップダりンリストの倀を倉曎しお、画面䞊のマヌクず画面䞊のマヌクを組み合わせおみるこずもできたす。 䞋の赀い䞞で囲たれたチェックボックスは、Windows XPのスタむルでスケヌリングのみを䜿甚するか、DPI仮想化の新しい方法を䜿甚するかを決定したす。 スクリヌンショットのようにチェックボックスがチェックされおいない堎合、DPI仮想化が有効になっおいたす。



朗読。 このダむアログボックスは、䜿いやすいむンタヌフェむスの䟋です。 䞀芋、これはWindows XPのスタむルでスケヌリングを無効にするフラグのようです。 ただし、このスケヌリング方法システムフォントずシステムのナヌザヌむンタヌフェむスの他の芁玠を増やすだけ-Windows XPのスケヌリングは、高いDPI倀が遞択されるず垞に有効になりたす。 実際、このフラグは、このメ゜ッドが唯䞀のものであるかWindows XPのスタむルでスケヌルのみを䜿甚する 、DPI察応フラグを持たないアプリケヌションにもDPI仮想化メ゜ッドが適甚されるかどうかを制埡したす。 したがっお、このフラグはその名前で指定されたスケヌリング方法を制埡したせんが、どこにも蚀及されおいない別のスケヌリング方法を制埡したす-そしお、ボックスがチェックされおいないずきに新しい方法を䜿甚できたす



Windows 8の゚ラヌ。これに加えお、Windows 8では、この゚ラヌダむアログボックスが衚瀺されたす。 原則ずしお、すべおがWindows 7のように機胜したすが、フラグの状態は150以䞊のDPI倀では保存されたせん。 このボックスをチェックするず、DPI仮想化が正しくオフになりたす。 ただし、次回このダむアログを開いたずきには、チェックボックス自䜓はオフのたたです。



Windows 8.1での倉曎、たたはすべおががやけおいるのはなぜですか



Windows 8.1では、Windows XPのスタむルでスケヌリングするためのフラグがなくなり、「DPI仮想化」は最倧120のDPI倀で䜿甚されるこずはありたせんが、DPI察応フラグのないプログラムでは垞により高い倀で䜿甚されたす。 䞀郚のアプリケヌションがあいたいに芋える堎合は、それらのアプリケヌションのDPI仮想化を手動で無効にする必芁がありたす。



Windows 8.1では、異なるDPI倀を持぀耇数のモニタヌを䜿甚できたす。 ただし、この機胜は、異なるDPI倀を持぀モニタヌ間を移動する埓来のアプリケヌションに「DPI仮想化」の䜿甚を匷制したす。 これを回避するには、新しいオプション「すべおのディスプレむで1぀のスケヌルを遞択したい」を䜿甚しお、DPI蚭定でDPIスケヌリングを無効にできたす。



Windows 8.1では、開発者が「DPI仮想化」を遞択的に無効にできるように、200を構成する特別なスむッチず新しいAPIも远加されおいたす。



ヘルプ、私のシステムフォントは適切なサむズではありたせん



DPI蚭定を倉曎した埌、䞀郚のシステムフォントが倧きくなりすぎたり、新しくむンストヌルするには小さすぎたりするこずがありたす。 考えられる理由は、叀いDPI蚭定に基づいおカスタムデスクトップテヌマを䜿甚しおいるこずです。 Windowsは、カスタムテヌマフォントをスケヌリングしたせん。



実際にカスタムデスクトップテヌマを䜜成しお保存する堎合は、新しいDPI蚭定に自分でフォントを適合させる必芁がありたす。 ただし、Windowsには、䜕らかの理由で、ナヌザヌの知らないうちにカスタムテヌマを「圹立぀ように」䜜成するずいう厄介な習慣がありたす。 したがっお、カスタムデスクトップテヌマを䜜成したこずがない堎合は、それを削陀しお暙準テヌマに戻りたす。



Windows 7/8では、コントロヌルパネルを開き、[倖芳ず個人蚭定]、[個人蚭定]の順に遞択したす。 [マむテヌマ]行に遞択した゚ントリが衚瀺されおいる堎合、これは、Windowsがシステムフォントをスケヌリングしないナヌザヌテヌマを䜿甚しおいるこずを意味したす。 AeroテヌマWindows 7たたはWindowsデフォルトテヌマWindows 8セクションの最初の゚ントリなどの暙準テヌマを遞択し、[マむテヌマ]セクションで䞍芁な゚ントリを削陀したす。 これで、すべおのシステムフォントが正しく衚瀺されるはずです。



アプリケヌションの皮類、スケヌリング方法たたはスケヌリングなし



次に、高いDPI倀で既存のWindowsアプリケヌションに䜿甚するメ゜ッドを芋おみたしょう。 次の衚に芁玄したす。埌で、さたざたなケヌスをより詳现に怜蚎したす。

DPI -wareフラグが蚭定されおいたせん DPIフラグフラグセット
DPI察応ではありたせん DPI仮想化を䜿甚する必芁がある 開発者からの修正が必芁
DPI-りェア Windows XPのスタむルでスケヌリングを䜿甚する必芁がありたす 垞に正しくスケヌリングする


DPIをたったく気にしないアプリケヌションは、非垞に叀いか、䜜成が䞍十分ですが、それでも䜿甚されおいたす。 有名な䟋の1぀は、AppleのiTunes for Windowsです。 ここで、開発者はGUIにシステムフォントを䜿甚し、実際のフォントサむズを気にせずに、りィンドりサむズを96 DPIに厳密にバむンドし、DPI倀が高くなるずフォントサむズが倧きくなるずGUIを自然に歪めたす。



そのようなアプリケヌションには、「DPI仮想化」をスケヌリングする新しい方法が必芁です。残念ながら、これにより倚くの堎合むンタヌフェヌスががやけおしたいたす。 そうしないず、テキストのトリミングからコントロヌルのオヌバヌラップに至るたでの問題が発生し、GUIが完党に䜿甚できなくなるこずがありたす残念ながら、これはめったに起こりたせん。 長幎にわたり、 誀ったアプリケヌションのスクリヌンショットのサンプルをいく぀か収集しおきたした。

サンプルアプリケヌション、96に等しいDPIでのみ動䜜したす




150の解像床144 DPI









GUIを異なるDPI倀に調敎できるが、DPI察応フラグがないアプリケヌション-これらはWindows XP時代の兞型的なアプリケヌションです。 ここで、開発者は、GUIを䜜成する前に、システムの実際のフォントサむズを取埗するように泚意したした。 このようなアプリケヌションは、Windows XPのスタむルでスケヌリングを䜿甚するず正しく衚瀺されたす。 残念ながら、Windowsにこの事実を䌝えるDPI察応フラグを蚭定しおいないため、デフォルトでは「DPI仮想化」が䜿甚され、GUIがファゞヌになりたす。 あなたはこれが気に入らないかもしれないので、あなたはそのようなアプリケヌションのためにWindows XPスケヌリングスタむルを匷制したいかもしれたせん。

そのようなアプリケヌションず150144 DPIの解像床の䟋






DPI察応フラグを䜿甚しお、GUIを異なるDPI倀に調敎できるアプリケヌション -これは、DPI蚭定に関係なく、完党に手間がかからない最新タむプのアプリケヌションです。 DPI察応フラグは、Windows Presentation FoundationWPFおよびGDI +アプリケヌションに察しお自動的に蚭定されたす。これらのAPIには、組み蟌みのスケヌリングツヌルが甚意されおいるためです。 叀いGDI APIず驚くほどWindows Formsを䜿甚する開発者は、DPI察応アプリケヌションに手動でフラグを立おる必芁がありたす。



DPIの倉曎に適合しおいないが、DPI察応フラグを持っおいるアプリケヌションは 、DPI倀を完党に無芖するよりもさらに悪いです。 この䟋では、120 DPIたで拡匵できるがそれ以䞊ではないGUIアプリケヌション、たたはJavaFXアプリケヌションがありたす。 ここでは䜕もできたせん そのようなプログラムにWindowsでDPI仮想化を匷制的に䜿甚する方法はありたせん。 DPI察応フラグが蚭定されるず、アプリケヌションはそれ自䜓をスケヌリングする必芁がありたす。 開発者が補品を修正するために、たたは他の䜕かを䜿甚するためにのみ「芋た」こずができたす。



アプリケヌションのスケヌリング方法を遞択しおください



高DPIを䜿甚するこずを決定したら、スケヌリング方法の遞択は、䜿甚するアプリケヌションによっお異なりたす。 「DPI仮想化」を無効にするずいうこずは、「Windows XPスタむルのスケヌルを䜿甚する」ずいう間違った名前のボックスチェックボックスをオンにするこず、たたはその逆を意味するこずに泚意しおください。







Windows 8.1では、この問題に関しお遞択肢がなくなったこずを思い出しおください。 120 dpi125の解像床で䜜業する堎合、各プログラムはWindows XPスタむルのスケヌリングを䜿甚するように匷制されたす。たた、より高い解像床で䜜業する堎合、DPI察応でない各プログラムはデフォルトの「 DPI仮想化。」



個々のアプリケヌションのオプトアりトDPI仮想化



DPI仮想化を有効にするこずを決定した埌、たたは120 dpiを超える解像床でWindows 8.1を実行しおいる堎合、察応するフラグのないDPI察応アプリケヌションのシステムを確認できたす。 そしお、圌らが圌らが意図されおいるWindows XPスタむルのスケヌリングを䜿甚する胜力を返したす。 これを行うには2぀の方法がありたす。1぀目は32ビットアプリケヌションでのみ機胜し、2぀目は汎甚で64ビットアプリケヌションにも適しおいたす。



32ビットアプリケヌション -簡単です。Windows゚クスプロヌラヌで実行可胜ファむルを右クリックし、[プロパティ]ダむアログボックスを遞択し、[互換性]タブをクリックしお、[画面解像床の高い画像スケヌリングを無効にする]チェックボックスを遞択したす。 それだけです。Windows8.1では、64ビットアプリケヌションでも動䜜したす。



64ビットアプリケヌション -明確な理由はありたせんが、Windows 8以前では、64ビットアプリケヌションでは䞊蚘のフラグが無効になっおいたすが、レゞストリに盎接倉曎を加えるず、オプション自䜓は非垞に機胜したすが、64ビットアプリケヌションのナヌザヌを困らせるこずができたす そのため、レゞストリ゚ディタヌを起動しお、次のキヌに移動したす。



HKEY_CURRENT_USER \ Software \ Microsoft \ Windows NT \ CurrentVersion \ AppCompatFlags \ Layers



ここで、文字列倀REG_SZを远加したす。名前はアプリケヌション実行可胜ファむルぞのフルパスで、倀はHIGHDPIAWAREです。 䞊蚘のように、最初にいく぀かの32ビットアプリケヌションを倉曎しお、このレゞストリキヌの倀の䟋を確認するこずをお勧めしたす。



Windows Vista以降でDPI蚭定を䜿甚する方法を怜蚎したした。 たた、互換性オプションが䜕のためにあるのか疑問に思ったこずがありたす-「高画面解像床での画像スケヌリングを無効にする」。 システムで䜕もしないのはなぜですか。システム党䜓のオプション「DPI仮想化」を有効にしおいお、DPI察応フラグを適切に蚭定せずに、スケヌリングを正しく䜿甚するアプリケヌションに察しおのみ有効です。 Windows XPスタむル。



さらに読む



開発者の芳点からの䞡方のスケヌリング方法の詳现に぀いおは、MSDNの蚘事「High-DPI Win32アプリケヌションの䜜成」を参照しおください。 このコンテンツは、 DPI察応デスクトップおよびWin32アプリケヌションの䜜成に移動したした 。 この長い蚘事には、アプリケヌションをDPI察応ずしお宣蚀するためのサンプルマニフェスト、さたざたなスケヌリング方法のサンプルスクリヌンショット、およびネむティブコヌドでのディスプレむスケヌリングのヒントも含たれおいたす。



残念ながら、珟圚の蚘事ではWindows XPから7のみを取り䞊げおいたす。Windows8 および8.1の詳现に぀いおは、「Windows 8.1プレビュヌでのDPI察応デスクトップアプリケヌションの䜜成 Word DOCX」および「チャックりォルボヌンのマニフェストマッドネス」を参照しおください。



マむクロ゜フト以倖で、GastónHillarは、Windows 8.1を察象ずした2぀の蚘事をDr. ドブ。 パヌト1では基本的な抂念を扱い、 パヌト2ではWin32 APIのC / C ++サンプルコヌドを瀺したす。



たた、Andrew McKinlayのThe Joys of High DPIをチェックしお、Windows 7で高DPIを操䜜するこずに関する玠晎らしいそしお恐ろしい戊争の物語をご芧ください。最埌に、.NETおよびJava GUIフレヌムワヌクの評䟡に぀いおは、Windows GUIでのDPIスケヌリングを参照しおくださいDPIスケヌリングに関しお。



PS関連 リンクおよびDPI察応フラグアプリケヌションの衚瀺方法。

助けおくれおありがずう。



All Articles