0

我有一个画布,我在上面动态添加了一些形状。我现在想Image在画布上添加一个。

一切正常,如果我添加ImageCanvas但是当我尝试添加时ImageCanvas图像没有显示。也许它隐藏在绘制的 Shapes 后面Canvas

我的问题是如何ImageCanvas.

这就是我添加图像的方式:

string strUri2 = String.Format(@"pack://application:,,,/MyFirstWPF;component/Images/tt.jpg");
image1.Source = new BitmapImage(new Uri(strUri2));

注意-> 画布上的形状是在添加图像之前添加的。

4

3 回答 3

2

你可以通过两种方式做到这一点:

  • 更改 的 Z-IndexImage以将其置于 Z-Order 的前面Canvas
  • 使用允许与元素Canvas重叠的容器(例如 a )ImageGrid

如果您对 Canvas 使用 Z-Index 方法,那么要正确执行此操作,您必须关注 Canvas 上其他元素的 Z-Index ....因为您必须选择大于其他一切。

您可以猜测,然后选择一个您认为其他元素永远无法到达的大 Z-Index,或者您可以扫描 Canvas 的子级并找到使用的最高 Z-Index,这样您就可以始终设置一个更高的……这样您就可以确保将图像“带到前面”。


(这可能与您说“Out of Canvas”时使用的相同)

还有另一种方法,这意味着您不必明确地使用 Z-Indexes,只需使用 Grid 并将 Canvas 和 Image 指定为子项...它们将占据同一个单元格,因此彼此重叠...作为最后一个孩子的图像将具有最大的隐含 Z-Index。

<Grid>
    <Canvas x:Name="mycanvas"/>
    <Image x:Name="image1/>
</Grid>
于 2012-08-19T09:08:54.163 回答
1

只需使用

myCanvas.Children.Insert(0,image1);
于 2012-08-19T09:14:07.113 回答
0

您可以将z-index图像设置为高于其他形状,以将其置于其他形状之上 -Canvas.SetZIndex(image1, (int)5);

请参阅这些链接以了解有关 z-index 的更多信息 - Controlling z-order , Z-Index of Canvas

于 2012-08-19T07:41:33.270 回答