我是Windows Phone Dev的新手,我打算这样做:
我取得的成就:
通过使用ImageBrush
,我可以设置画布背景图像,但在尝试使用Canvas.Children.Add(imageB)
将imageB放在图像A的顶部时出现问题。运行应用程序时,它只显示我在顶部没有imageB的imageA。
没有空引用异常,我确信图像A和B都已加载。
我的问题是:如何设置画布以显示ImageB并保持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之上的原因是我打算在图像B上设置EventHandler,以便我可以使用图像B来回复ManipulationDelta
事件。
我做了一些研究:
Windowsphone geek: Working with Images
Windows Phone 7 dragging and flicking UI
但没有运气。
感谢您的帮助: - )
答案 0 :(得分:0)
您的代码看起来像是创建了一个名为Image
的{{1}},但您从未设置它。这条线
imageB
看起来很奇怪,不应该是
Image.Source = new BitmapImage(new Uri("/Assets/imageB.png", UriKind.Relative));
答案 1 :(得分:0)
我想我刚刚找到问题所在:
我没有设置Canvas.SetLeft
和Canvas.SetTop
,我应该在使用canvas.Children.Add()
之前添加两行:
...
Canvas.SetLeft(imageB, point.X);
Canvas.SetTop(imageB, point.Y);
canvas.Children.Add(imageB);
...
和中提琴,问题解决了。
答案 2 :(得分: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);
};