Wpf DrawingContext.DrawRectangle以绘制矩形

Wpf DrawingContext.DrawRectangle以绘制矩形,wpf,drawingcontext,Wpf,Drawingcontext,我试图在图像中绘制一个矩形: <Canvas> <Image> <Image.Source> <DrawingImage> <DrawingImage.Drawing> <DrawingGroup x:Name="_drawingGroup" /> </DrawingI

我试图在图像中绘制一个矩形:

<Canvas>
    <Image>
        <Image.Source>
            <DrawingImage>
                <DrawingImage.Drawing>
                    <DrawingGroup x:Name="_drawingGroup" />
                </DrawingImage.Drawing>
            </DrawingImage>
        </Image.Source>
    </Image>
</Canvas>

如你们所见,我打算画一个左上角的矩形(100100)。但它并没有像预期的那样工作——它总是在(0,0)处绘制。我怎么了

DrawingImage将其
图形
与图形的可见部分对齐

作为一种解决方法,您可以只添加一个原点为(0,0)的透明矩形。还请注意,创建图形不需要DrawingVisual:

drawingGroup.Children.Add(new GeometryDrawing(
    Brushes.Transparent, null,
    new RectangleGeometry(new Rect(0, 0, 1, 1))));

drawingGroup.Children.Add(new GeometryDrawing(
    Brushes.Blue, null,
    new RectangleGeometry(new Rect(100, 100, 200, 100))));

drawingGroup.Freeze();

使用DrawingImage的图像控件的替代方法可以是使用DrawingBrush的(足够大的)矩形:

<Rectangle Width="10000" Height="10000">
    <Rectangle.Fill>
        <DrawingBrush ViewboxUnits="Absolute" Viewbox="0,0,10000,10000">
            <DrawingBrush.Drawing>
                <DrawingGroup x:Name="drawingGroup" />
            </DrawingBrush.Drawing>
        </DrawingBrush>
    </Rectangle.Fill>
</Rectangle>

左上角与什么有关?你的画布?我发布的代码只是一个简化版本,我不能改变整个代码结构。DrawingVisual也是必要的,因为我将在其中绘制复杂的图形。添加透明矩形(0,0,1,1)的解决方法对我来说似乎是可行的。例如,是否有更好的方法可以更改DrawingImage的某些属性以保持边界?我怀疑是否有任何类型的图形只能通过DrawingContext创建,而不能直接创建适当的图形对象。
<Rectangle Width="10000" Height="10000">
    <Rectangle.Fill>
        <DrawingBrush ViewboxUnits="Absolute" Viewbox="0,0,10000,10000">
            <DrawingBrush.Drawing>
                <DrawingGroup x:Name="drawingGroup" />
            </DrawingBrush.Drawing>
        </DrawingBrush>
    </Rectangle.Fill>
</Rectangle>
drawingGroup.Children.Add(new GeometryDrawing(
    Brushes.Blue, null,
    new RectangleGeometry(new Rect(100, 100, 200, 100))));

drawingGroup.Freeze();