У меня есть два метода, которые рисуют повернутый прямоугольник на экране.
RenderMethod1
визуализирует прямоугольник, повернутый на 30 градусов с использованием DrawingVisual
private static void RenderMethod1(DrawingContext dc) {
DrawingVisual drawingVisual = new DrawingVisual();
using (DrawingContext context = drawingVisual.RenderOpen()) {
Rect rect = new Rect(new System.Windows.Point(100, 100), new System.Windows.Size(320, 80));
context.DrawRectangle(System.Windows.Media.Brushes.LightBlue, (System.Windows.Media.Pen)null, rect);
}
drawingVisual.Transform = new RotateTransform(30, 100, 100);
dc.DrawDrawing(drawingVisual.Drawing);
}
RenderMethod2
отображает прямоугольник, повернутый на 30 градусов, используя DrawingGroup
private static void RenderMethod2(DrawingContext dc) {
DrawingGroup group = new DrawingGroup();
DrawingVisual drawingVisual = new DrawingVisual();
using (DrawingContext context = drawingVisual.RenderOpen()) {
Rect rect = new Rect(new System.Windows.Point(100, 100), new System.Windows.Size(320, 80));
context.DrawRectangle(System.Windows.Media.Brushes.LightBlue, (System.Windows.Media.Pen)null, rect);
}
group.Children.Add(drawingVisual.Drawing);
group.Transform = new RotateTransform(30, 100, 100);
group.Freeze();
dc.DrawDrawing(group);
}
Вывод выглядит следующим образом:
RenderMethod1
![enter image description here](https://i.stack.imgur.com/8leoH.png)
RenderMethod2
![enter image description here](https://i.stack.imgur.com/dAmKo.png)
Как вы можете видеть, RenderMethod1
и RenderMethod2
выходы должны быть точно такими же, но это не так. Есть ли что-то, что я делаю неправильно в RenderMethod1
?
Заранее спасибо за помощь,