@prefix schema: <https://schema.org/> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix ks: <https://comcomponent.com/vocab/> .

<https://comcomponent.com/blog/winforms-high-dpi-guide/#article>
    schema:about <https://comcomponent.com/knowledge/windows-forms/>, <https://comcomponent.com/knowledge/dpi-awareness-mode/> ;
    schema:mentions <https://comcomponent.com/knowledge/dpi-unaware-mode/>, <https://comcomponent.com/knowledge/system-dpi-aware/>, <https://comcomponent.com/knowledge/per-monitor-v1/>, <https://comcomponent.com/knowledge/per-monitor-v2/>, <https://comcomponent.com/knowledge/gdi-scaling/>, <https://comcomponent.com/knowledge/dpi-virtualization/>, <https://comcomponent.com/knowledge/devicedpi-scaling/>, <https://comcomponent.com/knowledge/autoscale-mode/>, <https://comcomponent.com/knowledge/autoscale-dimensions/>, <https://comcomponent.com/knowledge/designer-high-dpi-corruption/>, <https://comcomponent.com/knowledge/exe-dpi-override-setting/>, <https://comcomponent.com/knowledge/mixed-mode-dpi-scaling/>, <https://comcomponent.com/knowledge/dotnet-high-dpi-setting/>, <https://comcomponent.com/knowledge/dpi-manifest-declaration/>, <https://comcomponent.com/knowledge/dpi-appconfig-declaration/> .

<https://comcomponent.com/knowledge/windows-forms/> a skos:Concept ;
    skos:prefLabel "Windows Forms"@ja ;
    skos:definition "デスクトップGUIアプリケーションを構築するための.NET/.NET FrameworkのUIフレームワーク。"@ja ;
    skos:altLabel "WinForms" ;
    ks:requires <https://comcomponent.com/knowledge/dpi-awareness-mode/> ;
    ks:uses <https://comcomponent.com/knowledge/autoscale-mode/> .

<https://comcomponent.com/knowledge/dpi-awareness-mode/> a skos:Concept ;
    skos:prefLabel "DPI認識モード"@ja ;
    skos:definition "アプリが「自分はどこまでDPIを扱えるか」をOSに申告する区分。Unaware・System Aware・Per-Monitor・Per-Monitor V2の4つを基本とする。"@ja ;
    skos:altLabel "DPI Awareness" ;
    skos:altLabel "DPI_AWARENESS_CONTEXT" ;
    ks:uses <https://comcomponent.com/knowledge/dpi-unaware-mode/> ;
    ks:uses <https://comcomponent.com/knowledge/system-dpi-aware/> ;
    ks:uses <https://comcomponent.com/knowledge/per-monitor-v1/> ;
    ks:uses <https://comcomponent.com/knowledge/per-monitor-v2/> ;
    ks:uses <https://comcomponent.com/knowledge/gdi-scaling/> .

<https://comcomponent.com/knowledge/dpi-unaware-mode/> a skos:Concept ;
    skos:prefLabel "Unaware(DPI非対応)"@ja ;
    skos:definition "DPI認識モードを何も宣言しない既定の状態で、アプリからは常に96 DPIに見える。"@ja ;
    skos:altLabel "DPI Unaware" ;
    ks:mayCause <https://comcomponent.com/knowledge/dpi-virtualization/> .

<https://comcomponent.com/knowledge/system-dpi-aware/> a skos:Concept ;
    skos:prefLabel "System DPI Aware"@ja ;
    skos:definition "サインイン時の主モニターのDPIに合わせて描画が固定されるDPI認識モード。主モニター以外や、サインイン後にDPIが変わった場合はOSが拡大表示する。WPFは宣言なしでこの状態になる。"@ja ;
    skos:altLabel "System Aware" ;
    skos:altLabel "システムDPI認識"@ja .

<https://comcomponent.com/knowledge/per-monitor-v1/> a skos:Concept ;
    skos:prefLabel "Per-Monitor(V1)"@ja ;
    skos:definition "ウィンドウがあるモニターのDPIをトップレベルウィンドウへ通知するだけで、スケーリングは全部自前で処理する必要があるDPI認識モード。"@ja ;
    skos:altLabel "Per-Monitor DPI Aware" ;
    ks:notRecommendedFor <https://comcomponent.com/knowledge/windows-forms/> .

<https://comcomponent.com/knowledge/per-monitor-v2/> a skos:Concept ;
    skos:prefLabel "Per-Monitor V2(PMv2)"@ja ;
    skos:definition "子ウィンドウまでDPI変更が通知され、タイトルバーなど非クライアント領域はOSが自動でスケールするDPI認識モード。Windows 10 (1703)以降で利用できる。"@ja ;
    skos:altLabel "Per Monitor V2" ;
    skos:altLabel "PMv2" .

<https://comcomponent.com/knowledge/gdi-scaling/> a skos:Concept ;
    skos:prefLabel "GDIスケーリング"@ja ;
    skos:definition "アプリとしてはUnawareのまま、GDIで描かれるテキストや図形だけをOSがベクターレベルで拡大する、Windows 10 1809以降の改良版ビットマップ拡大。"@ja ;
    skos:altLabel "DPI_AWARENESS_CONTEXT_UNAWARE_GDISCALED" .

<https://comcomponent.com/knowledge/dpi-virtualization/> a skos:Concept ;
    skos:prefLabel "DPI仮想化"@ja ;
    skos:definition "DPI対応を宣言していないアプリに対し、OSが「画面は96 DPIだ」と偽って描かせ、その結果をビットマップとして拡大表示する救済措置。レイアウトは崩れない代わりに全体がにじむ。"@ja ;
    skos:altLabel "DPI Virtualization" ;
    skos:altLabel "ビットマップストレッチ"@ja .

<https://comcomponent.com/knowledge/devicedpi-scaling/> a skos:Concept ;
    skos:prefLabel "DeviceDpi基準の自前描画スケーリング"@ja ;
    skos:definition "Control.DeviceDpiを基準に96 DPI換算の設計値を現在のDPIへ変換する、自前描画コントロールのスケーリング手法。"@ja ;
    skos:altLabel "Control.DeviceDpi" .

<https://comcomponent.com/knowledge/autoscale-mode/> a skos:Concept ;
    skos:prefLabel "AutoScaleMode"@ja ;
    skos:definition "DPI認識モードとは別に、WinFormsのフォーム(ContainerControl)自身が持つ、デザイン時と実行時の環境差を吸収する自動スケーリング機構。"@ja ;
    skos:altLabel "WinFormsの自動スケーリング機構"@ja ;
    ks:uses <https://comcomponent.com/knowledge/autoscale-dimensions/> .

<https://comcomponent.com/knowledge/autoscale-dimensions/> a skos:Concept ;
    skos:prefLabel "AutoScaleDimensions"@ja ;
    skos:definition "デザイン時の環境での基準値(フォームのフォント寸法など)をDesigner.csに記録する、AutoScaleModeの基準値プロパティ。"@ja ;
    skos:altLabel "AutoScaleDimensions プロパティ"@ja .

<https://comcomponent.com/knowledge/designer-high-dpi-corruption/> a skos:Concept ;
    skos:prefLabel "デザイナーの高DPI事故"@ja ;
    skos:definition "150%等の高DPIモニターでWinFormsデザイナーを開いてフォームを保存すると、Designer.csのAutoScaleDimensionsや座標・サイズが高DPI環境の値で上書きされ、100%環境でビルドするとレイアウトが縮んで見える事故。"@ja ;
    skos:altLabel "Designer.csの高DPI破壊"@ja .

<https://comcomponent.com/knowledge/exe-dpi-override-setting/> a skos:Concept ;
    skos:prefLabel "exeプロパティの高DPI設定上書き"@ja ;
    skos:definition "exeファイルのプロパティ「互換性」タブから、利用者側でそのアプリのDPIスケーリング動作を上書きできる設定。"@ja ;
    skos:altLabel "互換性タブの高DPI設定の変更"@ja .

<https://comcomponent.com/knowledge/mixed-mode-dpi-scaling/> a skos:Concept ;
    skos:prefLabel "Mixed-Mode DPI Scaling"@ja ;
    skos:definition "Windows 10 1607以降、SetThreadDpiAwarenessContextによってトップレベルウィンドウ単位で異なるDPI認識モードを混在させられる仕組み。"@ja ;
    skos:altLabel "トップレベルウィンドウ単位のDPI認識モード混在"@ja .

<https://comcomponent.com/knowledge/dotnet-high-dpi-setting/> a skos:Concept ;
    skos:prefLabel ".NETの高DPI設定(ApplicationHighDpiMode/SetHighDpiMode)"@ja ;
    skos:definition ".NET(Core 3.1以降)のWinFormsアプリで、プロジェクトファイルのApplicationHighDpiModeプロパティまたはコードのApplication.SetHighDpiMode呼び出しによりDPI認識モードを宣言する仕組み。既定はSystemAware。"@ja ;
    skos:altLabel "ApplicationHighDpiMode" ;
    skos:altLabel "Application.SetHighDpiMode" .

<https://comcomponent.com/knowledge/dpi-appconfig-declaration/> a skos:Concept ;
    skos:prefLabel "app.configでのDPI宣言"@ja ;
    skos:definition ".NET Framework 4.7以降のWinFormsで、app.configのSystem.Windows.Forms.ApplicationConfigurationSectionにDpiAwarenessキーを設定してDPI認識モードを宣言する方法。"@ja ;
    skos:altLabel "System.Windows.Forms.ApplicationConfigurationSection" ;
    skos:altLabel "DpiAwareness設定"@ja ;
    ks:notRecommendedFor <https://comcomponent.com/knowledge/dpi-manifest-declaration/> .

<https://comcomponent.com/knowledge/dpi-manifest-declaration/> a skos:Concept ;
    skos:prefLabel "マニフェストでのDPI宣言"@ja ;
    skos:definition "実行ファイルに埋め込むマニフェストのdpiAware(Vista以降)/dpiAwareness(Windows 10 1607以降)要素でDPI認識モードを宣言する方法。"@ja ;
    skos:altLabel "dpiAware" ;
    skos:altLabel "dpiAwareness" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/windows-forms/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/dpi-awareness-mode/> ;
    schema:description "WinFormsアプリの高DPI対応の第一歩は、自分のアプリが今どのDPI認識モードで動いているかを把握することである。"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/win32/hidpi/setting-the-default-dpi-awareness-for-a-process> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/dpi-awareness-mode/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/dpi-unaware-mode/> ;
    schema:description "DPI認識モードの選択肢の1つが、何も宣言しない既定のUnawareである。"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/win32/hidpi/dpi-awareness-context> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/dpi-awareness-mode/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/system-dpi-aware/> ;
    schema:description "DPI認識モードの選択肢の1つが、サインイン時の主モニターDPIに固定されるSystem Awareである。"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/win32/hidpi/dpi-awareness-context> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/dpi-awareness-mode/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/per-monitor-v1/> ;
    schema:description "DPI認識モードの選択肢の1つが、通知のみでスケーリングを自前実装するPer-Monitor(V1)である。"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/win32/hidpi/dpi-awareness-context> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/dpi-awareness-mode/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/per-monitor-v2/> ;
    schema:description "DPI認識モードの選択肢の1つが、非クライアント領域もOSが追従するPer-Monitor V2である。"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/win32/hidpi/dpi-awareness-context> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/dpi-awareness-mode/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/gdi-scaling/> ;
    schema:description "DPI認識モードに準じる選択肢として、コードを変えずに文字のにじみだけ軽減できるGDIスケーリングがある。"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/win32/hidpi/dpi-awareness-context> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/dpi-unaware-mode/> ;
    rdf:predicate ks:mayCause ;
    rdf:object <https://comcomponent.com/knowledge/dpi-virtualization/> ;
    schema:description "DPI対応を宣言していないアプリ(Unaware)には、OSが「画面は96 DPIだ」と偽ってビットマップ拡大するDPI仮想化が働く。"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/win32/hidpi/high-dpi-desktop-application-development-on-windows> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/per-monitor-v1/> ;
    rdf:predicate ks:notRecommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/windows-forms/> ;
    schema:description "Per-Monitor(V1)は通知が来るだけでスケーリングを全部自前で処理する素のWin32向けの仕組みで、フレームワーク支援がなくWinFormsから選ぶ理由がない。"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/win32/hidpi/dpi-awareness-context> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/per-monitor-v2/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/devicedpi-scaling/> ;
    schema:description "Per-Monitor V2ではモニター間移動のたびにDeviceDpiが変わるため、自前描画はDpiChanged系イベントでキャッシュ値を作り直す設計が必要になる。"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/desktop/winforms/high-dpi-support-in-windows-forms> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/windows-forms/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/autoscale-mode/> ;
    schema:description "WinFormsのフォームはDPI認識モードとは別に、AutoScaleModeという自動スケーリング機構を持つ。"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/desktop/winforms/forms/autoscale> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/autoscale-mode/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/autoscale-dimensions/> ;
    schema:description "AutoScaleModeは、デザインした環境での基準値をAutoScaleDimensionsとしてDesigner.csに記録し、実行時の環境値と比較して子コントロールを拡大縮小する。"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/desktop/winforms/forms/autoscale> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/autoscale-dimensions/> ;
    rdf:predicate ks:mayCause ;
    rdf:object <https://comcomponent.com/knowledge/designer-high-dpi-corruption/> ;
    schema:description "AutoScaleDimensionsはデザイン時の環境値を記録する仕組みであるため、150%モニターでデザイナーを開いて保存すると値が書き換わり、100%環境でのビルド時にレイアウトが縮んで見える事故につながることがある。"@ja ;
    ks:evidence <https://learn.microsoft.com/visualstudio/designers/disable-dpi-awareness> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/exe-dpi-override-setting/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/gdi-scaling/> ;
    schema:description "互換性タブの高DPI設定で「システム(拡張)」を選ぶと、GDIスケーリングが適用されGDI描画のテキストだけくっきりする。"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/win32/hidpi/dpi-awareness-context> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/exe-dpi-override-setting/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/dpi-virtualization/> ;
    schema:description "互換性タブの高DPI設定で「システム」を選ぶと、DPI仮想化を強制する(崩れないがにじむ)。"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/win32/hidpi/dpi-awareness-context> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/mixed-mode-dpi-scaling/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/per-monitor-v2/> ;
    schema:description "本記事が想定する段階移行のシナリオでは、Mixed-Modeは、メイン画面をPer-Monitor V2にしつつ直しきれないダイアログをUnawareのままOSに拡大させるという段階移行をWin32レベルでサポートする。"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/win32/hidpi/high-dpi-improvements-for-desktop-applications> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/windows-forms/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/dotnet-high-dpi-setting/> ;
    schema:description ".NET(Core 3.1以降)のWinFormsは、プロジェクトファイルのApplicationHighDpiModeまたはApplication.SetHighDpiModeでDPI認識モードを宣言する。"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/desktop/winforms/whats-new/net60> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/dpi-appconfig-declaration/> ;
    rdf:predicate ks:notRecommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/dpi-manifest-declaration/> ;
    schema:description "マニフェストのdpiAware/dpiAwareness記述はapp.configのDpiAwareness設定を上書きするため、マニフェストで宣言しているアプリにapp.config側の設定を併用することは公式に推奨されていない。併記自体はでき、マニフェストが優先される"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/desktop/winforms/high-dpi-support-in-windows-forms> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/windows-forms/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/dpi-manifest-declaration/> ;
    schema:description ".NET Framework 4.6以下やVB6/MFC混在アプリでは、マニフェストでSystem Awareを宣言するところまでが現実的な対応になる。"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/win32/hidpi/setting-the-default-dpi-awareness-for-a-process> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/windows-forms/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/dpi-appconfig-declaration/> ;
    schema:description ".NET Framework 4.7以降は、マニフェストでWindows 10互換を宣言したうえで、app.configのDpiAwareness設定でPer-Monitor V2などを宣言する。"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/desktop/winforms/high-dpi-support-in-windows-forms> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/system-dpi-aware/> ;
    rdf:predicate ks:shouldPrecede ;
    rdf:object <https://comcomponent.com/knowledge/per-monitor-v2/> ;
    schema:description "対応レベルの引き上げは、まずSystem Aware化で主モニターをくっきりさせることを第一段階とし、利用環境とアプリの寿命が見合う場合にPer-Monitor V2完全対応を第二段階として進める2段構えが現実的とされる。"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/win32/hidpi/high-dpi-desktop-application-development-on-windows> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/system-dpi-aware/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/autoscale-mode/> ;
    schema:description "WinFormsアプリがフレームワークの自動スケーリングに任せている場合、System Awareにすると起動時の主モニターDPIに合わせたスケーリングが一度だけ働き、主モニター上ではくっきり表示される。System AwareはWinForms固有ではないプロセス単位の設定であり、AutoScaleMode.Noneにして自前でレイアウトすることもできる。"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/desktop/winforms/forms/autoscale> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .
