Buttonから派生したカスタムコントロールでは、ButtonRenderer.DrawButton()がさまざまな状態でボタンを描画します。
Windowsの表示設定が32ビットの色深度に設定されている場合はすべて問題ありませんが、一度16ビットに設定すると、色が通常のWinFormsボタンのいずれかと一致せず、UIで目立ちます、私は本当に欲しくない。
このような最小限のサンプルコードを使用して、これを複製しました。
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
Rectangle rect = new Rectangle(10, 10, 250, 120);
ButtonRenderer.DrawButton(e.Graphics, rect, PushButtonState.Normal);
rect = new Rectangle(300, 300, 250, 120);
ControlPaint.DrawButton(e.Graphics, rect, ButtonState.Normal);
}
これを与える...
DrawButtonメソッドによって描画された2つの「ボタン」は、標準のボタンとフォームの背景(変更せずにデフォルトの「コントロール」のままにした)よりもわずかに明るい色になっていることに気付くと思います。 ...十分にズームすると、正しい背景色と別の明るい色のピクセルが交互になっていることがわかります...
ユーザーがリモートデスクトップ(RDP)を使用してアプリケーションに接続しているため、この問題を発見しました。リモートデスクトップ設定を32ビットに強制すると問題は解決しますが、パフォーマンスに影響があると思います。一部のユーザーは比較的低速のブロードバンドリンクを介して海外で作業しています。したがって、32ビットを強制することは避けたいオプションです。 。ディスプレイ設定を16ビットカラーに設定することにより、PCの前でも発生します。
何かアイデアはありますか?ButtonRendererクラスとControlPaintクラスに何らかのバグがありますか、それともこれを回避する方法がありますか?(私は.Net 4.0を使用しています)。