我是Windows Phone Dev的新手。我打算做:
- 用图像a; 设置画布背景
- 在图像上添加另一个图像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
但没有运气。
感谢您的帮助: - )
您的代码看起来像创建一个称为imageB
的Image
,但您永远不会设置它。线
Image.Source = new BitmapImage(new Uri("/Assets/imageB.png", UriKind.Relative));
似乎很奇怪,不是
imageB.Source = new BitmapImage(new Uri("/Assets/imageB.png", UriKind.Relative));
我想我刚刚找到了问题所在:
我没有设置Canvas.SetLeft
和Canvas.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);
};