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);
}