2011-08-02 10 views
0

イメージをカスタムコントロールに描画しました。カスタムコントロールで新しいものを描画する前に描画したものをすべてクリアするにはどうすればよいですか?

しかし、カスタムコントロールに別のイメージを描画するときは、以上でを上書きまたは描画します。新しいものを描画する前に、描画したすべてをクリアできますか? didntのが働い

MY SOLUTIONS:

S1>私がペイントイベントを呼び出しますが、私はすでにそれにいくつかのコードを持っているので、それは問題を解決されていないthis.Invalidate()を使用同じオーバードローイング問題を引き起こす。

S2>を使用しています。グラフィックスクラスのクリアメソッドがこの問題を解決しました。 私は私のカスタムコントロールに

//in my custom controls paint method 
    Graphics g = this.CreateGraphics(); 
    g.Clear(this.ForeColor); 

をすべてクリアするには、このコードを使用していますが、私はDoubleBufferedプロパティを使用し、今では何も表示されない理由がたくさん!ザッツを点滅しています!

+1

あなたは、 'g.Clear(BackColorプロパティを)'を使用することはできませんか? – Patrick

+1

それはあなたが同じerronousものを再び絵画する必要があります場合は助けていない。あなたのペイント方法は、それが "古いイメージを引き寄せる"ものですか?私は問題が何であるかについてはあまりよく分かりません。 – Patrick

+2

あなたのタイトルに '[Solved]'を加えないでください。あなた自身の解決策を見つけたらそれを回答として投稿し、それから1日かそれを受け入れてください。システムは問題を「解決済み」と表示します。また、あなたは答えから評判を得ることになるかもしれません。 – ChrisF

答えて

1

ちらつき問題が解決されました。 実は問題は、私はグラフィックobject.Iは、Graphicsオブジェクトを作成するには、このコードを使用し作成された方法であった。

Graphics g = this.CreateGraphics(); 

これは問題をちらつきもDoubleBufferedプロパティも働いていなかっただけでなく、原因。

Graphicsオブジェクトを作成して描画するには、実際にはuse Paint event's e.Graphicsにする必要があります。

このように、今、私のDoubleBufferedプロパティは、その仕事をしている...親がnullであるため、

関連する問題