Gewusst wie: aktualisieren von Grafiken in C#
Habe ich einen timer in einem panel und wenn der timer "tickt", es ändert die Koordinaten eines Rechtecks.
Habe ich versucht, zwei Ansätze:
1. Innerhalb onPaint-Methode,
2. Timer ruft eine Funktion zum erstellen von Grafiken und zeichnen Sie das Rechteck verschieben
Der erste nicht funktioniert, aber wenn ich die Fenster wechseln, es zog einmal.
Die zweite funktioniert mit dem problem. Es bewegt sich aber das verlassen der bisherigen position mit Farbe ausgefüllt, was bedeutet, dass die Grafiken nicht aktualisiert.
Ich einfach verwenden g.FillRectangles()
zu tun.
Kann mir jemand helfen?
P. S. the panel is using a transparent background.
Hinzugefügt:
Dies ist ein System.Windows.Form.Timer
timer = new Timer();
timer.Enabled = false;
timer.Interval = 100; /* 100 millisec */
timer.Tick += new EventHandler(TimerCallback);
private void TimerCallback(object sender, EventArgs e)
{
x+=10;
y+=10;
//drawsomething();
return;
}
1.
protected override void OnPaint(PaintEventArgs e)
{
Graphics g = e.Graphics;
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.None;
g.FillRectangle(Brushes.Red, x, y, 100, 100);
base.OnPaint(e);
}
2.
private void drawsomething()
{
if (graphics == null)
graphics = CreateGraphics();
graphics.FillRectangle(Brushes.Red, x, y, 100, 100);
}
- bitte posten Sie Ihre timer-Steuerelement-Ereignis-code.
- versuchen Sie, verwenden Sie public virtual void Aktualisieren(); hier
- versuchen Sie, diese Form.ActiveForm.Refresh(); ODER diese.Refresh();
- Hi, himanshu, sowohl Aktualisieren() einfach frische die ganze form und das Rechteck ist nicht aktualisiert
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ort
this.Invalidate()
in der TimerCallback-Ereignis.entfernen
drawsomething
Funktion. es ist hier nicht erforderlich.Vollständige Code:
P.S. the panel is using a transparent background.
Warum hast du dieses panel?Können Sie
Invalidate
Methode. Diese Methode Nimmt einen bestimmten Bereich der Kontrolle und verursacht eine paint-Meldung an das Steuerelement gesendet werden.Details sind hier: http://msdn.microsoft.com/ru-ru/library/system.windows.forms.panel.invalidate%28v=vs.110%29.aspx
Müssen Sie rufen Sie die Aktualisieren Methode der control-Klasse nach Neuzeichnen. Es