渲染/旋转 WPF 三角形时出现性能问题
如果我显示了一个 WPF 三角形并且它将围绕中心点旋转一定程度,我可以通过以下两种方式之一进行:
以编程方式确定后端中的点及其偏移量,使用 XAML 将它们简单地放置在它们所属的画布上,如下所示:
<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>
每次都生成“相同”的三角形,然后使用 RenderTransform (Rotate) 将其放在它所属的位置。在这种情况下,旋转计算被混淆了,因为我无法访问它们是如何完成的。
<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>
我的问题是哪个更快?
我知道我应该自己测试它,但是我如何测量具有这种粒度的对象的渲染时间。我需要能够计算表单的实际渲染时间有多长,但由于我不是开始重绘的人,所以我不知道如何捕获开始时间。