Ich bin Entwickler und C# App für Windows Mobile. Ich habe ein benutzerdefiniertes Steuerelement mit OnPaint überschrieben, um ein Bild zu zeichnen, dass der Benutzer mit dem Zeiger bewegt. Meine eigene OnPaint-Methode ist folgende:Benutzerdefiniertes Steuerelement zum Anzeigen eines Bilds: Verschieben Sie das Bild in
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);
}
Die imageToShow es das Bild ist.
Die rectImageToShow es auf Ereignis OnResize auf diese Weise initialisiert ist:
rectImageToShow =
new Rectangle(0, 0, this.ClientSize.Width, this.ClientSize.Height);
this.Top und this.Left sind die topLeft Ecke, um das Bild innerhalb des benutzerdefinierten Steuerelement zu zeichnen.
Ich denke, es wird gut funktionieren, aber wenn ich das Bild verschiebe es nie die ganze Kontrolle. Ich sehe immer einen Teil der vorherigen Zeichnung.
Was mache ich falsch?
Vielen Dank!
Es funktioniert mit: e.Graphics.Clear (Color.White); – VansFannel