4

WPF アプリケーションは通常、すぐに使用できる高 DPI 画面で正しくスケーリングされますか (マニフェストなどをさらにカスタマイズする必要はありませんか?)。彼らがしたのは私の理解でしたか?

私が作成した 2 つの WPF アプリケーションは、新しいラップトップ (Windows 10 を実行) でラップトップ画面で表示すると、どちらもぼやけて表示されます。通常、ラップトップのプライマリ ディスプレイは外部の低 dpi モニターに設定されており、内蔵のラップトップ パネルは 125% にスケーリングされています。ただし、低 dpi モニターが接続されているかどうかに関係なく、ぼやけが表示されます。

2 つのアプリケーションの起動方法 (プライマリ ウィンドウを起動する既定のコード テンプレートではなく、メイン メソッドを使用) に関係があるのではないかと考えましたが、Visual Studio 2015 を起動して、まったく新しい WPF を生成しました。プロジェクト テンプレート (空白のフォームにラジオ ボタンを 2 つだけ) を使用してアプリケーションを作成しても、私のシステムでは高 DPI にスケーリングされません。

マニフェストを使用した高 dpi スケーリングのアプリケーションごとの無効化を許可するために、Windows のコピーで「外部マニフェストを優先する」レジストリ設定を構成したことにも言及する価値があるかもしれません。(つまりHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SideBySide "PreferExternalManifest"=dword:00000001)。

4

3 に答える 3

5

.net 4.6.2以降のWPF アプリは、以前のバージョンではなく、デフォルトで Monitor DPI 対応です。

WPF アプリケーションで、モニターごとの DPI 認識が有効になりました。この改善は、さまざまな DPI レベルの複数のディスプレイが 1 台のコンピューターに接続されているシナリオにとって重要です。WPF アプリケーションのすべてまたは一部がモニター間で移行されると、予想される動作は、WPF がアプリの DPI を画面に自動的に一致させることです。今はそうです。以前のバージョンでは、WPF アプリケーションでモニターごとの DPI 認識を有効にするには、追加のネイティブ コードを記述する必要がありました。

したがって、.4.6.2 開発ツールをインストールし、アプリケーションのターゲットを 4.6.2 にして、これをサポートしてください。

于 2016-08-30T04:18:53.947 に答える
3

PresentationCore に依存するすべてのプログラムは、自動的に DPI 対応になります。それを明示的に無効にするには、属性が必要です

あなたは確かに別の問題を抱えています.WPFアプリはモニターごとのdpi認識を自動的にサポートしません. Windows 8.1 以降で利用できる機能。外部モニターにプライマリ ディスプレイを配置すると、おそらく別の DPI 設定を指定した可能性が高くなり、ラップトップの画面上のウィンドウは、明示的にオプトインしない限り、同じ DPI 設定を使用するように強制されます。 かなりの骨の折れる作業が必要です。または、単にラップトップの画面をプライマリ ディスプレイにすることを検討してください。ディスプレイ アプレットを使用して簡単に切り替えることができます。

于 2016-08-30T01:36:14.843 に答える