私の 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 設定を取得する方法はありますか?