0

を受け入れ、Control生成された画像をそれに描画するクラスがあります。私のアプリケーション コードでは、Panelこれにコントロールを使用しています。これは、イメージが再描画されるときにコントロールで多くのちらつきが発生することを除けば、うまく機能しているようです。解決策は、コントロールでダブルバッファリングを有効にすることだと思います。私は次のコードでこれをやっています:

System.Reflection.PropertyInfo aProp =
                typeof(System.Windows.Forms.Control).GetProperty(
                    "DoubleBuffered",
                    System.Reflection.BindingFlags.NonPublic |
                    System.Reflection.BindingFlags.Instance);

            aProp.SetValue(drawControl, true, null); 

このコードを追加すると、画像が描画され、すぐにデフォルトの灰色のボタンの背景色に置き換えられます。まるでシステムが自分のコンテンツの上に描画しているかのようです。

コントロールを描画しないようにシステムに指示するプロパティをどこかで見たのを覚えています (コントロール全体をコンテンツで埋めているので、これは私にとって完璧です) が、今は見つかりません。そのようなプロパティはありますか? もしそうなら、どうすれば有効にできますか?

.NET フレームワーク バージョン 4.0 で C# を使用しています。

4

1 に答える 1

1

現在FlatStyle.Systemに設定されている場合は、コントロールのFlatStyleをFlatStyle.Standardに設定してみてください。

(リフレクションによるDoubleBufferedの設定もひどいように見えますが、おそらく何らかの理由でそれを行う必要があります)

于 2011-04-18T20:54:22.507 に答える