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
Schreibe einen Kommentar