我有一个C#WPF应用程序,其中我有几个可能的图像,有些图像中有不规则的形状。我想在点击图像中的不同形状时生成不同的事件。
例如:如果图像是房子的正面,我会在点击门把手、门、窗户、屋顶等时产生不同的事件。
图像必须可调整大小。
我可以用网格和形状手动完成,但似乎应该有一种更优雅的方式。
我想我看到了一种技术,你可以制作一个像原始图像一样的"阴影"图像,但每个可点击的区域都填充了不同的颜色。(可点击区域的"颜色图"。)然后点击处理程序可以访问阴影图像的颜色并引发适当的事件。然而,我不知道如何将阴影图像隐藏在显示图像的"下面",并且仍然让单击事件处理程序拾取颜色。
我相信有一个很好的方法来处理这个问题,我只是通常不处理图像,所以我完全不知道。
谢谢。
让漂亮的图像在Z顺序中高于"阴影图像"并设置topImage怎么样。IsHitTestVisible=false;
这将导致点击绕过顶部可见图像,直接进入底层阴影图像点击处理程序。
我在生产代码中使用的另一种技术是从Image派生一个新类,覆盖HitTestCore并自己测试像素值,如果它是某种颜色或不透明度,我会返回一个不同的对象。这样我就能控制所有的动作。