WPF 三角形をレンダリング/回転するときにパフォーマンスの問題が発生しています
表示されている WPF 三角形があり、中心点を中心にある程度回転する場合、次の 2 つの方法のいずれかを実行できます。
バックエンドでポイントとそのオフセットをプログラムで決定し、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>
私の質問は、どちらが速いですか?
自分でテストする必要があることはわかっていますが、そのような粒度でオブジェクトのレンダリング時間を測定するにはどうすればよいですか。フォームの実際のレンダリング時間を計測できる必要がありますが、再描画を開始するのは私ではないため、開始時間を把握する方法がわかりません。