无论提供何种坐标,DrawingImage始终在左上方绘制

时间:2009-09-25 15:39:34

标签: wpf image drawing

我正在尝试在WPF中的Image中绘制一组图像,可能是从左上角开始,但无论我做什么,ImageDrawingImage或者DrawingGroup导致最靠近左上角的图像默认为图像的左上角。

以下是代码:

XAML:

<Canvas Grid.Column="1" Name="Canvas">
    <Image Name="imgLevel">
        <Image.Source>
            <DrawingImage>
                 <DrawingImage.Drawing>
                      <DrawingGroup>
                           <ImageDrawing Rect="120, 120, 100, 100" ImageSource="" />
                           <ImageDrawing Rect="300, 300, 100, 100" ImageSource="" />
                       </DrawingGroup>
                 </DrawingImage.Drawing>
            </DrawingImage>
        </Image.Source>
    </Image>
</Canvas>

无论我为第一个ImageDrawing设置坐标,它始终位于左上角。

有没有办法覆盖这种行为?更重要的是,我最终希望能够为该Rect指定负数。这可能吗?

3 个答案:

答案 0 :(得分:1)

是否有任何理由不能在Image控件上使用Canvas.Left和Canvas.Top附加属性?像这样:

<Canvas Name="Canvas" Grid.Column="1">
    <Image Canvas.Left="-5" Canvas.Top="-10" Name="imgLevel">
        <Image.Source>
        </Image.Source>
    </Image>
</Canvas>

答案 1 :(得分:1)

向您的绘图组添加一些位于所需左上角的绘图组(例如,一个RectangleGeometry,它覆盖了您想要的整个区域,但有一个透明画笔)。

然后,当DrawingImage获取整个组的边界时,它将被强制至少为“隐形”几何体的大小。

答案 2 :(得分:0)

我不清楚为什么,但将一个像素宽的矩形(使用不可见的画笔)放入DrawingGroup的原点可以解决这个问题。最好知道在WPF中管理这种行为的规则。