1

我是 Windows Phone Dev. 的新手,我打算这样做:

  1. 用图像A设置画布背景;
  2. 在图像 A 上添加另一个图像 B。

我所取得的成就

通过使用ImageBrush,我可以设置画布背景图像,但是在尝试使用Canvas.Children.Add(imageB)将 imageB 放在图像 A 上时遇到问题。运行应用程序时,它只显示图像 A,顶部没有图像 B。

没有空引用异常,我确信图像 A 和 B 都已加载。

我的问题是:如何设置画布以显示 ImageB 并保持 imageB 响应 Manipulation 事件,以便我以后可以触摸和移动它?

这是我的相关代码:

ImageBrush brush = new ImageBrush();
Image imageB = new Image();
imageB.Source = new BitmapImage(new Uri("/Assets/imageB.png", UriKind.Relative));

//...here I set the ImageBrush as imageA
canvas.Background = brush; // Can display imageA 

canvas.Children.Add(imageB);
imageB.ManipulationDelta += ImageB_ManipulationDelta;
imageB.ManipulationCompleted += ImageB_ManipulationCompleted;

我之所以坚持将图像 B 放在图像 A 之上,是因为我打算在图像 B 上设置 EventHandler,以便我可以使用图像 B 来响应ManipulationDelta事件。

我对此做了一些研究:

Windowsphone 极客:使用图像

Windows Phone 7 拖拽UI

但没有运气。

谢谢您的帮助 :-)

4

3 回答 3

0

您的代码看起来像您创建了一个Image被调用imageB但您从未设置它。线

Image.Source = new BitmapImage(new Uri("/Assets/imageB.png", UriKind.Relative));

看起来很奇怪,不是吗?

imageB.Source = new BitmapImage(new Uri("/Assets/imageB.png", UriKind.Relative));
于 2012-11-05T11:58:55.447 回答
0

我想我刚刚发现问题出在哪里:

我没有设置Canvas.SetLeftand Canvas.SetTop,我应该在使用之前添加两行canvas.Children.Add()

...
Canvas.SetLeft(imageB, point.X);
Canvas.SetTop(imageB, point.Y);
canvas.Children.Add(imageB);
...

和中提琴,问题解决了。

于 2012-11-05T14:44:07.600 回答
0

我和你有同样的问题。经过大量搜索,我终于找到了解决方案。此代码将按您的预期工作:

BitmapImage img = new BitmapImage(new Uri("Assets/imageB.png", UriKind.Relative));
img.CreateOptions = BitmapCreateOptions.None;
Image imageB = new Image();
imageB.Source = img;
img.ImageOpened += (s, e) =>
{
    canvas.Children.Add(imageB);
};
于 2014-04-23T15:09:00.600 回答