我有一个包含透明区域的 png,并将其设置为图像标签。
当光标位于图像的不透明部分上时,如何将光标设置为手?
谢谢
为此,您需要查看位图本身。WPF 的命中测试机制认为任何使用“透明”画笔绘制的像素即使不可见也仍然可以点击。这通常是一件好事,但会妨碍您尝试做的事情。因为 .png 使用透明笔刷进行绘制,所以在进行命中测试时,整个 .png 都被视为已绘制。
您需要在MouseMove
事件处理程序中做的是:
HitTestResult
你返回的每一个,检查它是否是一个Image
,如果是,鼠标下方是否有一个透明像素Cursor
根据鼠标所在位置确定一个值要确定鼠标是否在图像的透明像素上:
e.GetPosition(image)
)BitmapSource.CopyPixels
将一个 1 像素的矩形复制到一个数组中(即只有鼠标所在的单个像素)