Windows Mobile用のC#アプリを開発しています。ユーザーがポインターで移動する画像を描画するために、 OnPaint をオーバーライドしたカスタム コントロールがあります。私自身の OnPaint メソッドは次のとおりです。
protected override void OnPaint(PaintEventArgs e)
{
Graphics gxOff; //Offscreen graphics
Brush backBrush;
if (m_bmpOffscreen == null) //Bitmap for doublebuffering
{
m_bmpOffscreen = new Bitmap(ClientSize.Width, ClientSize.Height);
}
gxOff = Graphics.FromImage(m_bmpOffscreen);
gxOff.Clear(Color.White);
backBrush = new SolidBrush(Color.White);
gxOff.FillRectangle(backBrush, this.ClientRectangle);
//Draw some bitmap
gxOff.DrawImage(imageToShow, 0, 0, rectImageToShow, GraphicsUnit.Pixel);
//Draw from the memory bitmap
e.Graphics.DrawImage(m_bmpOffscreen, this.Left, this.Top);
base.OnPaint(e);
}
imageToShowは画像です。
rectImageToShowは、イベント OnResize で次のように初期化されます。
rectImageToShow =
new Rectangle(0, 0, this.ClientSize.Width, this.ClientSize.Height);
this.Topとthis.Leftは、カスタム コントロール内に画像を描画するための topLeft コーナーです。
うまくいくと思いますが、画像を移動すると、すべてのコントロールがきれいになることはありません。私はいつも前の絵の一部を見ています。
私が間違っていることは何ですか?
ありがとうございました!