c# - 为任意图像实现可点击的 map

标签 c# wpf image dictionary clickable

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

例如:如果图像是房子的正面,我会在点击门 Handlebars 、门、 window 、屋顶等时生成不同的事件。

图像必须可以调整大小。

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

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

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

谢谢。

最佳答案

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

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

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

关于c# - 为任意图像实现可点击的 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13733031/

相关文章:

c# - MEF中如何动态按需加载插件?

c# - png over jpeg(水印效果)质量差?

c# - 秒表的数据绑定(bind)问题已过去

c# - Windows 8 中的 WPF 触摸桌面应用程序

c# - 从 WPF 中的 Image 标记修改图像

c# - 在 WebApi Controller 中读取 HttpContent

c# - 在 C# 应用程序中打开本地网络上的 .chm 文件

.net - 使 Windows 应用程序始终位于其他窗口之上并处于焦点位置 - 始终

image - 调整图像大小保持纵横比

r - 将矩阵转换为 R 中的灰度图像