在WPF中在画布上显示图像的问题

时间:2012-08-19 07:27:46

标签: wpf image

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

如果我从Image添加Canvas,但是当我尝试在Image上添加Canvas时,图片不会显示,那么一切正常。也许它隐藏在Canvas上绘制的形状背后。

我的问题是如何将Image带到Canvas前面。

这是我添加图片的方式:

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

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

3 个答案:

答案 0 :(得分:2)

你可以这两种方式:

  • 更改Image的Z-Index,将其置于Canvas
  • 的Z-Order前面
  • 使用允许CanvasImage元素重叠的容器(例如Grid

如果你使用Canvas的Z-Index方法然后正确地做你必须关注Canvas上其他元素的Z-Index ....因为你必须选择一个Z-Index值比其他一切都要大。

您可以猜测,只需选择一个您认为其他元素永远无法达到的大型Z-Index,或者您可以扫描Canvas的子项并找到所使用的最高Z-Index,以便您可以总是设置一个更高的....所以你可以确保你“带到前面”的形象。


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

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

<Grid>
    <Canvas x:Name="mycanvas"/>
    <Image x:Name="image1/>
</Grid>

答案 1 :(得分:1)

只需使用

myCanvas.Children.Insert(0,image1);

答案 2 :(得分:0)

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

请参阅以下链接,详细了解z-index - Controlling z-orderZ-Index of Canvas