我正在尝试在WPF中的Image
中绘制一组图像,可能是从左上角开始,但无论我做什么,Image
,DrawingImage
或者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指定负数。这可能吗?
答案 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中管理这种行为的规则。