I Performance-Probleme haben beim Rendern/Dreh WPFWPF PathGeometry/RotateTransform Optimierung
Dreiecken Wenn ich ein WPF-Dreieck angezeigt wird, hatte, und es wird um eine Mittelpunkt zu einem gewissen Grad gedreht wird, kann ich es eines von zwei tun Wege:
Programatically die Punkte bestimmen und ihre im Backend-Offset verwenden XAML einfach sie auf der Leinwand zu platzieren, wo sie hingehören, würde es so aussehen:
<Path Stroke="Black"> <Path.Data> <PathGeometry> <PathFigure StartPoint ="{Binding CalculatedPointA, Mode=OneWay}"> <LineSegment Point="{Binding CalculatedPointB, Mode=OneWay}" /> <LineSegment Point="{Binding CalculatedPointC, Mode=OneWay}" /> <LineSegment Point="{Binding CalculatedPointA, Mode=OneWay}" /> </PathFigure> </PathGeometry> </Path.Data> </Path>
Erzeugen Sie jedes Mal das gleiche Dreieck und verwenden Sie dann eine RenderTransform (Rotate), um es dorthin zu bringen, wo es hingehört. In diesem Fall werden die Rotationsberechnungen verschleiert, da ich keinen Zugriff darauf habe, wie sie ausgeführt werden.
<Path Stroke="Black"> <Path.Data> <PathGeometry> <PathFigure StartPoint ="{Binding TriPointA, Mode=OneWay}"> <LineSegment Point="{Binding TriPointB, Mode=OneWay}" /> <LineSegment Point="{Binding TriPointC, Mode=OneWay}" /> <LineSegment Point="{Binding TriPointA, Mode=OneWay}" /> </PathFigure> </PathGeometry> </Path.Data> <Path.RenderTransform> <RotateTransform CenterX="{Binding Centre.X, Mode=OneWay}" CenterY="{Binding Centre.Y, Mode=OneWay}" Angle="{Binding Orientation, Mode=OneWay}" /> </Path.RenderTransform> </Path>
Meine Frage ist, welche schneller ist?
Ich weiß, ich sollte es selbst testen, aber wie messe ich die Renderzeit von Objekten mit einer solchen Granularität. Ich müsste in der Lage sein zu zählen, wie lange die tatsächliche Rendering-Zeit für das Formular ist, aber da ich nicht derjenige bin, der den Neuaufbau startet, kann ich die Startzeit nicht erfassen.