1

私の C# winforms アプリケーションでは、Graphics オブジェクトを使用して現在の DPI 値を取得し、コードが特定のコンポーネントをスケーリングできるようにしています。これは正常に動作しますが、CreateGraphics() を呼び出すとすぐに、winforms アプリケーションのルック アンド フィールが変わります。スタイルは、おなじみの「丸みを帯びた」ボタンから、より古風な「鋭いエッジ」のボタンに変わります。

なぜこのようなことが起こるのでしょうか?また、それを防ぐために何ができるでしょうか?

私のコードは次のようになります。

        Graphics g = this.CreateGraphics();
        try
        {
            if (g.DpiX == 120.0f)
            {
                // scale the components appropriately
            }
        }
        finally
        {
            g.Dispose();
        }

実際、CreateGraphics を呼び出してすぐに破棄するだけで、問題を再現できます。

どんな助けや洞察も大歓迎です!

別の質問は、Graphics オブジェクトを作成せずに DPI 設定を取得する方法はありますか?

4

1 に答える 1