为任意图像实现可点击的地图

时间:2012-12-05 21:44:05

标签: c# wpf image map clickable

我有一个C#WPF应用程序,其中有几个可能的图像,一些图像中有不规则的形状。我想在点击图像中的不同形状时生成不同的事件。

例如:如果图像位于房屋的前面,我会在点击门把手,门,窗户,屋顶等时产生不同的事件。

图片必须可调整大小。

我可以使用网格和形状手动完成,但似乎应该有更优雅的方式。

我以为我看到了一种技术,你可以制作一个像原版一样的“阴影”图像,但每个可点击区域都填充不同的颜色。 (可点击区域的“颜色映射”。)然后,单击处理程序可以访问阴影图像的颜色并引发相应的事件。但是,我无法弄清楚如何在显示图像“下方”隐藏阴影图像,并仍然让点击事件处理程序拾取颜色。

我确信有一个很好的方法可以解决这个问题,我通常不会处理图像,所以我完全不了解它。

感谢。

1 个答案:

答案 0 :(得分:1)

如何让Z图像中的漂亮图像高于“阴影图像”并设置topImage.IsHitTestVisible = false;

这会导致点击次数绕过顶部可见图像并直接转到底层阴影图像点击处理程序。

我在生产代码中使用的另一种技术是从Image派生一个新类并覆盖HitTestCore并自己测试像素值,如果它是某种颜色或不透明度,我会返回一个不同的对象。这样我控制了所有动作。