我在Windows手机项目中使用了一些透明图像。 让Say My Origanal Image Size为400 x 100。
将图像切割成四个不同的部分后,它看起来像这样。第一个箭头是活动的,休息部分是透明的,但图像大小是相同的400 x 100.我对其余三个箭头做同样的事情。我将它们切成活动部分,而休息部分将是透明的,尺寸将是400 x 100.所以当我将所有4个图像放在网格中时,它将显示如上图像。
我想获得每张图片的点击事件。有什么方法我可以得到活动部分均值的点击事件,它有一些值平均颜色值不是透明区域或图像的非活动部分。一旦我点击第一张图片,它就会给我一张该图像的事件。当我点击第二张图像时,它会给我第二张图像的点击事件。但是当我点击图像时,它只给我一个点击事件,因为它占据了整个宽度和高度,而其他图像也是相同的大小。请为此建议任何解决方法。
答案 0 :(得分:2)
XAML
<Grid Name="Grid1">
<Image Tag="Image1" Source="1.png"/>
<Image Tag="Image2" Source="2.png"/>
<!-- more images -->
</Grid>
CS
void MouseDown(object sender, MouseButtonEventArgs args)
{
foreach (var img in ((Panel)sender).Children.OfType<Image>())
{
var w = new WriteableBitmap(img, null);
var p = args.GetPosition(img);
if (w.Pixels[w.PixelWidth * (int)p.Y + (int)p.X] != 0)
{
MessageBox.Show(string.Format("You clicked {0}!", img.Tag));
args.Handled = true;
break;
}
}
}
像这样附加处理程序
Grid1.AddHandler(UIElement.MouseLeftButtonDownEvent,
new MouseButtonEventHandler(MouseDown), false);
命名空间
using System.Linq;
using System.Windows.Media.Imaging;