0

拡張メタファイルを生成してピクチャ ボックスに表示するユーザー コントロールを使用するアプリケーションを作成しました。これは、アプリケーションが実行されている 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
    
4

0 に答える 0