Ich mache ein Partikel-Spiel mit (bisher nur Wasser), und die Draw()-Methode innerhalb eines Elements ist ziemlich langsam mit ein paar auf einmal. Ich nehme an, es ist, weil es so viel jede Sekunde berechnet, aber ich bin immer noch ziemlich unglücklich mit ihm, wenn man bedenkt, sie sind nur grundlegende 2D-Formen. Wie kann ich es effizienter machen?
Hier ist mein Code:
(Schleife) (Läuft alle 50 Millisekunden) (Hinweis: Ich habe nur Forms für den Timer eingefügt, ich verwende WPF).
void TimeKeeper_Tick(object sender, EventArgs e)
{
foreach (Element ele in Elements)
{
ele.Draw();
}
}
Und Ziehverfahren. Pos ist ein "Vector2" (Klasse, die ich gemacht habe, um mir Zeit zu sparen):
public void Draw()
{
Pos.Add(3, 10);
if (Pos.Y > (int)canvas.ActualHeight)
{
Pos.Set(Pos.X, (int)shape.RenderSize.Width);
}
if (Pos.X+shape.RenderSize.Width > (int)canvas.ActualWidth)
{
Pos.Set(0, Pos.Y+(int)shape.RenderSize.Height);
}
shape.SetValue(Canvas.LeftProperty, (double)Pos.X);
shape.SetValue(Canvas.TopProperty, (double)Pos.Y);
if (canvas.Children.IndexOf(shape) != null)
{
canvas.Children.Remove(shape);
}
canvas.Children.Add(shape);
}