C# DrawingGroup与DrawingVisual变换
我有两种方法在屏幕上画一个旋转的矩形C# DrawingGroup与DrawingVisual变换,c#,wpf,transform,C#,Wpf,Transform,我有两种方法在屏幕上画一个旋转的矩形 RenderMethod1使用DrawingVisual private static void RenderMethod1(DrawingContext dc) { DrawingVisual drawingVisual = new DrawingVisual(); using (DrawingContext context = drawingVisual.RenderOpen()) { Rect rect = new Re
RenderMethod1
使用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
使用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
正如您所看到的,RenderMethod1
和RenderMethod2
输出应该是完全相同的,但它们不是。RenderMethod1
中是否有我做错了什么
提前感谢您的帮助,我最终通过如下更改RenderMethod1解决了这个问题,效果如预期
private static void RenderMethod1(DrawingContext dc) {
DrawingGroup drawingVisual = new DrawingGroup();
using (DrawingContext context = drawingVisual.Open()) {
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);
}
private static void RenderMethod1(DrawingContext dc) {
DrawingGroup drawingVisual = new DrawingGroup();
using (DrawingContext context = drawingVisual.Open()) {
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);
}