У меня проблемы с производительностью при рендеринге / повороте треугольников 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>
У меня вопрос, какой из них быстрее?
Я знаю, что должен сам проверить это, но как мне измерить время рендеринга объектов с такой детализацией. Мне нужно было бы рассчитать, сколько времени фактическое время рендеринга для формы, но, поскольку я не тот, кто запускает перерисовку, я не знаю, как зафиксировать время начала.