拡張メタファイルを生成してピクチャ ボックスに表示するユーザー コントロールを使用するアプリケーションを作成しました。これは、アプリケーションが実行されている PC でアプリケーションのフォームを表示するときに問題なく機能します。Windowsリモートログインを使用して、このPCにリモートログインすることが不可欠です。この場合、表示解像度と倍率(100%、125%、150% に設定可能) は、アプリケーションの実行中に変更される場合があります。ディスプレイの解像度を変更しても、グラフィックが間違ったサイズで表示されることはありません。ただし、拡大率を変更すると、拡大率に応じてグラフィックスが間違ったサイズで表示されます。
「倍率」を決定するための解決策を探しています。これは、問題を持続的に解決するのに役立ちます。
役立つものを見つけるためにすでに何時間も検索しましたが、成功しませんでした:
解決策を読んでも役に立ちません
Dim test As Graphics = MyControl.CreateGraphics Dim Resolution As Single = test.DpiX ' Returns 96 under all conditions
。API 呼び出しもいくつか試しましたが、同じ結果になりました (常に 96 DPI)。DPI 認識の有効化/無効化は役に立ちませんでした。
画面の解像度を読み取ると、要因を見つけるのに役立ちますが、解像度の変化と倍率の変化を区別できないため、これでも十分ではありません。
System.Windows.SystemParameters.PrimaryScreenWidth ' Value is updated only when starting the app Screen.PrimaryScreen.Bounds.Width ' Value updated, but depends on resolution setting and magnification setting System.Windows.SystemParameters.PrimaryScreenWidth / Screen.PrimaryScreen.Bounds.Width ' Factor useless