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