-1

C# で Windows フォーム アプリケーションに一連の四角形を描画しようとしています。System.Drawing.Graphics を使用して Rectangles を描画しています。それらは正常に機能しますが、コンピューターで別のアプリケーションに切り替えるか、フォームを最小化すると、消えてしまいます。なぜこれが事実なのか誰にも分かりますか?

System.Drawing.Graphics graphics = this.CreateGraphics();
System.Drawing.Rectangle rectangle = new System.Drawing.Rectangle(
     25 + (32 * PASS_THROUGH), 190, 32, 32);
graphics.DrawRectangle(System.Drawing.Pens.Green, rectangle);
4

1 に答える 1

3

あなたは正しい方法で絵を描くつもりはありません。これがどのように機能するかについての基本的な情報は次のとおりです。

http://msdn.microsoft.com/en-us/library/kxys6ytf.aspx

次のようなコードが必要です。

protected override void OnPaint(PaintEventArgs e)
{
    base.OnPaint(e);

    Rectangle = new Rectangle(25 + (32 * PASS_THROUGH), 190, 32, 32);
    e.Graphics.DrawRectangle(Pens.Green, Rectangle);
}

Windows は、ウィンドウの再描画が必要になるたびにこのメソッドを呼び出します。

動的に描画されるものを変更できるようにする場合は、このメソッドにロジックを追加する必要があります。と書くif文など、if (drawRectangle) ...

上記の の例のように、変数を変更した後に自分自身を再描画するようにコントロールに通知したい場合は、問題のコントロールでメソッドdrawRectangleを呼び出すだけです。Control.Invalidate

さまざまな変数やオブジェクトを管理して、シェイプのリストなど、何をペイントするかを制御できます。ペイント メソッドでは、これらの形状をループして 1 つずつ描画します。これがあなたがやろうとしていることなのか、それともフォームの外観をカスタマイズしたいだけで動的に変更する必要がないのかはわかりません.

于 2013-10-04T20:35:54.817 に答える