2

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

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

图像必须可调整大小。

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

我以为我看到了一种技术,您可以制作与原始图像类似的“阴影”图像,但每个可点击区域都填充了不同的颜色。(可点击区域的“颜色图”。)然后点击处理程序可以访问阴影图像的颜色并引发适当的事件。但是,我不知道如何隐藏显示图像“下方”的阴影图像,并且仍然让 click 事件处理程序拾取颜色。

我确信有一个很好的方法来处理这个问题,我只是通常不使用图像,所以我完全不知道它。

谢谢。

4

1 回答 1

1

让漂亮的图像在 Z 顺序中高于“阴影图像”并设置 topImage.IsHitTestVisible = false; 怎么样?

这将导致点击绕过顶部的可见图像并直接进入底层阴影图像点击处理程序。

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

于 2012-12-06T00:19:59.130 回答