【发布时间】:2010-02-12 10:04:10
【问题描述】:
我有一个包含透明区域的 png,并将其设置为图像标签。
当光标在图像的不透明部分上时,如何将光标设置为手?
谢谢
【问题讨论】:
标签: wpf transparency wpf-4.0 mouse-cursor
我有一个包含透明区域的 png,并将其设置为图像标签。
当光标在图像的不透明部分上时,如何将光标设置为手?
谢谢
【问题讨论】:
标签: wpf transparency wpf-4.0 mouse-cursor
为此,您需要查看位图本身。 WPF 的命中测试机制认为任何使用“透明”画笔绘制的像素即使不可见也仍然可以点击。这通常是一件好事,但会妨碍您尝试做的事情。因为 .png 使用透明笔刷进行绘制,所以在进行命中测试时,整个 .png 都被视为已绘制。
您需要在MouseMove 事件处理程序中执行以下操作:
HitTestResult,检查它是否是Image,如果是,则鼠标下方是否有透明像素Cursor 值判断鼠标是否在图像的透明像素上:
e.GetPosition(image))BitmapSource.CopyPixels 将一个 1 像素的矩形复制到一个数组中(即只有鼠标悬停的单个像素)【讨论】: