2012-02-22 9 views
0

私はボタンがフォームコンストラクタで、Winフォームの上に横たわっている[OK]を私は、マウスの休暇が発射されたときにobj = this.CreateGraphics();これはパフォーマンスとメモリの使用量に関する正しい方法ですか?それとも良い方法でしょうか?

マウスイベントを入力

MainFormGraphicsHandle.DrawRectangle(new Pen(Color.CornflowerBlue, 2.0f), 
this.MdPlayerButton.Location.X - 2, this.MdPlayerButton.Location.Y - 2, 
this.MdPlayerButton.Size.Width + 4, this.MdPlayerButton.Size.Height + 4); 

を解雇されたグラフィックス持っ

メインのグラフィックスのハンドル.DrawRectangle(新しいPen(this.BackColor、2.0f)、 this.MdPlayerButton.Location.X - 2、this.MdPlayerButton.Location.Y - 2、 this.MdPlayerButton.Size.Width + 4、this.MdPlayerButton 。サイズ.Height + 4);

矩形の上に矩形を描画すると、メモリリークなどの原因になることがありますか、ボタンを強調表示するのは良い方法ですか?

私は自分のフォームのサイズを変更できるようにしたいので、準備が整ったイメージを使用して、それらの間のスワップは優先されません。

ありがとうございました!

答えて

1

WinFormsはグラフィックスにGDIを使用し、GDIは即時モードとして知られています。つまり、1〜10億の四角形を描くことができます。これは結果のビットマップを保持するのに必要なだけのメモリを消費します。

手動で作成したペンを処分することがあります効率の改善のために

、しかし、そうでない場合は、.NETは、最終的にはとにかくあなたのためにそれらをクリーンアップします。

using (var pen = new Pen(...)) 
    DrawRectangle(pen, ...); 
関連する問題