将图像添加到画布时获得空白的结果



我是Windows Phone Dev的新手。我打算做:

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

我已经实现了

通过使用 ImageBrush,我可以设置帆布背景图像,但是当尝试使用 Canvas.Children.Add(imageB)将imageb放在图像A的顶部时,我遇到了问题。映像在顶部。

没有零引用异常,我确定图像A和B都加载了。

我的问题是:如何设置画布显示imageb并保持对操作事件的响应,以便我稍后触摸并移动它?

这是我的相关代码:

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顶部的原因是我打算将EventHandler放在图像B上,以便我可以使用image B重新登录ManipulationDelta事件。

我对此进行了一些研究:

Windows Phone Geek:使用图像

Windows Phone 7拖动和轻弹UI

但没有运气。

感谢您的帮助: - )

您的代码看起来像创建一个称为imageBImage,但您永远不会设置它。线

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

似乎很奇怪,不是

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

我想我刚刚找到了问题所在:

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

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

和中提琴,问题解决了。

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

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);
};

最新更新