知識マップ: Windowsアプリのダークモードとコントラストテーマ対応 ── DWMのダークタイトルバー、WinForms/WPFのシステムテーマ追従、ハイコントラスト時の描画

記事「Windowsアプリのダークモードとコントラストテーマ対応 ── DWMのダークタイトルバー、WinForms/WPFのシステムテーマ追従、ハイコントラスト時の描画」の主張を、概念と関係(エッジ)に分解した知識グラフの全体です。各関係には根拠・確認日・確度が付いています。

Windowsのテーマは「設定 > 個人用設定 > 色」のライト/ダーク(カラーモード)と「設定 > アクセシビリティ > コントラストテーマ」の2軸で、コントラストテーマが有効な間はダークモードが使えないため判定はコントラストテーマが先です。既存アプリのタイトルバーが白いままなのは互換性のための既定で、DwmSetWindowAttributeのDWMWA_USE_IMMERSIVE_DARK_MODE(値20)にTRUEを渡すとシステムがダークのときにダークで描かれます。現在のモードはUISettingsの前景色の明るさで判定し、変更通知で塗り直します。WinFormsは.NET 9/10のSetColorMode、WPFは.NET 9/10のThemeModeが実装を担い、コントラストテーマ時はSPI_GETHIGHCONTRAST系で判定して色をシステムカラーのペアに写像します。標準サポートの無いランタイムではライト固定を明示しますが、コントラストテーマ対応だけは固定できません。

Windowsアプリのダークモードとコントラストテーマ対応の知識マップライト/ダークのカラーモードとコントラストテーマの関係、DwmSetWindowAttributeによるダークタイトルバー、UISettingsによる検知とテーマ変更の通知、WinFormsのSetColorModeとWPFのThemeModeによる実装、コントラストテーマの検知APIとシステムカラーの前景/背景ペア、ライト固定の方針を示す図両立しない実装を担うで構成できる前提とする前提とするで構成できるで構成できる前提とするで確認できるに保存される推奨される対応推奨される対応推奨される対応用いるのは非推奨両立しない推奨される対応で確認できる実装を担う前提とする両立しない推奨される対応実装を担う実装を担う推奨される対応実装を担う前提とする推奨される対応推奨される対応カラーモード(ライト/ダーク)コントラストテーマ(ハイコントラスト)DWMWA_USE_IMMERSIVE_DARK_MODEダークタイトルバーDwmSetWindowAttributeWindows 11DWMのタイトルバー色属性DWMのシステム背景素材(Mica/Acrylic)UISettingsによるカラーモードの取得と変更通知AppsUseLightThemeレジストリ値テーマ変更の通知アプリのカラーパレットの集約色のハードコードシステムカラーの前景/背景ペアコントラストテーマの検知APIWinFormsのApplication.SetColorModeControlStyles.ApplyThemingImplicitly独自描画コントロールWPFのThemeMode(Fluentテーマ)WPFのリソース辞書の差し替えWPFWinUIのThemeDictionariesコントラストテーマ対応コントラスト比(達成基準1.4.3)ライト固定の方針.NET Framework

概念間の関係(全28件)

図と同じ関係を文章でも列挙します。表示している文と機械可読な意味データ(RDFa)は同じ要素に載っています。確度が「確立した関係」のものは直接の関係として、「条件付きの関係」のものは成立条件つきの言明(rdf:Statement)として表現しています。

主要概念の定義

カラーモード(ライト/ダーク)
Windowsの「設定 > 個人用設定 > 色」で選ぶ、OSとアプリ全体の前景色と背景色の明暗を定める設定。ライトは明るい背景に暗い前景、ダークは暗い背景に明るい前景で、前景とは既定の文字色を指す。
コントラストテーマ(ハイコントラスト)
おおむね7:1以上のコントラスト比の制約されたパレットを使うWindowsのテーマ。
DWMWA_USE_IMMERSIVE_DARK_MODE
DwmSetWindowAttributeで使うDWMWINDOWATTRIBUTEの値20。BOOLのTRUEを渡すと、ダークモードのシステム設定が有効なときにウィンドウのフレームをダークの色で描くことを許可し、FALSEで常にライトになる。Windows 11 ビルド22000以降で対応。
ダークタイトルバー
システムのダーク設定に合わせて、DWMがウィンドウのフレーム(タイトルバー・枠)をダークの色で描く状態。Windowsはアプリの対応可否を知らないため、互換性のためすべてのウィンドウが既定でライトになる。
DWMのタイトルバー色属性
タイトルバーの色(35)・タイトル文字の色(36)・ウィンドウ枠の色(34)をCOLORREFで指定するDWMWINDOWATTRIBUTEの値。DWMWA_COLOR_DEFAULTを渡すとシステム既定に戻る。Windows 11 ビルド22000以降で対応。
DWMのシステム背景素材(Mica/Acrylic)
DWMWA_SYSTEMBACKDROP_TYPE(38)でウィンドウ全体の背後にシステムが描く素材を指定する仕組み。Windows 11ではDWMSBT_MAINWINDOWがMica、DWMSBT_TRANSIENTWINDOWがAcrylicに相当し、素材の効果は将来のWindowsで変わりうる。ビルド22621以降で対応。
テーマ変更の通知
システム設定・テーマ・システムカラーの変更をアプリに知らせるWin32メッセージ(WM_SETTINGCHANGE・WM_THEMECHANGED・WM_SYSCOLORCHANGE)と、.NETでそれを包むSystemEvents.UserPreferenceChangedイベント。
アプリのカラーパレットの集約
アプリが使う色をライト用・ダーク用の1組ずつにまとめ、各画面がそこから色を取る構造。散らばったハードコード色では塗り直す場所を列挙できない。
色のハードコード
Color.Whiteや#E6E6E6のように特定の色をコードやXAMLに直接書くこと。テーマやコントラストテーマの切り替えに追従できず、前景と背景の組み合わせを崩す原因になる。
システムカラーの前景/背景ペア
WindowTextとWindow、ButtonTextとButtonFace、HighlightTextとHighlight、GrayTextとWindow、HotlightとWindowのように、組み合わせて使う前提で設計されたシステムカラーの対応関係。GrayTextは無効状態、Hotlightはハイパーリンク専用。
WinFormsのApplication.SetColorMode
.NET 9で導入され.NET 10で実験的でなくなった、WinFormsアプリのカラーモード(Classic・System・Dark)を設定するAPI。Application.Runより前に呼び、SystemColorsが対応する色セットに切り替わる。
ControlStyles.ApplyThemingImplicitly
WinFormsのコントロールがアプリのカラーモードに暗黙に従うかを決めるControlStyles。CreateParamsのオーバーライド内でbase.CreateParamsより前にSetStyleで設定する必要があり、コンストラクターでは間に合わない。
WPFのThemeMode(Fluentテーマ)
.NET 9のWPFで導入された、Windows 11のFluentデザインに沿ったテーマをLight・Dark・System・Noneのモードで適用するプロパティ。ウィンドウへのダークモードと背景素材の適用も制御する。コードからの操作は実験的(WPF0001)。
WPFのリソース辞書の差し替え
ライト用とダーク用のResourceDictionaryに同じキーで色を定義し、MergedDictionaries内で入れ替えることでDynamicResource参照を更新させる、従来テーマのWPFでテーマに追従する手法。StaticResource参照は読み込み時の値のまま更新されない。
WinUIのThemeDictionaries
XAMLのResourceDictionary.ThemeDictionariesにDefault・Light・HighContrastのキーでテーマごとのリソースを定義し、現在のテーマに応じて自動的に選ばれる仕組み。HighContrastは名前付きハイコントラストテーマが無いときのフォールバックキー。
ライト固定の方針
ダークモードの標準サポートが無いランタイムで、DWM属性を既定(FALSE)のままにしクライアント領域も従来どおりライトで一貫させると明示する方針。Windowsの既定の挙動そのもので、コントラストテーマ対応は別途必要。
コントラストテーマ対応
SystemColor/Brushリソースを使って色をハードコードせず、文字拡大時にはコントロールやコンテナもリサイズ・再配置されるようにする実装。4種類のコントラストテーマで動作確認することが推奨される。

機械可読データ

このデータセットについて

作成
合同会社小村ソフト
ライセンス
CC BY 4.0 ── 出典(合同会社小村ソフト)とライセンスへのリンクを明示し、改変した場合はその旨を示すことを条件に、再配布・改変を含めて再利用できます
最終確認日
2026-09-02 ── 収録する関係のうち、最後に出典と照合した日

このページはサイトの知識グラフ(_data/knowledge/)から自動生成されています。誤りの指摘はお問い合わせからお願いします。