WPF光标在部分透明的图像上

我有一个包含透明区域的PNG,并将其设置为图像标签,但如何在光线位于图像的不透明部分时将光标设置为手形?

谢谢托尼


为此,您需要查看位图本身。 WPF的命中测试机制认为即使看不见,仍然可以点击“透明”画笔绘制的任何像素。 这通常是一件好事,但阻碍了你想要做的事情。 因为.png是用透明画笔绘制的,所以整个.png在进行命中测试时被认为是绘制的。

您需要在MouseMove事件处理程序中执行的操作是:

  • 继续并按正常方式调用命中测试。
  • 对于您返回的每个HitTestResult ,请检查它是否为Image ,如果是,则检查透明像素是否位于鼠标下面
  • 当您遇到图像的非图像或非透明像素时,请停止。
  • 根据鼠标结束的情况决定Cursor
  • 要确定鼠标是否位于图像的透明像素上方,请执行以下操作:

  • 获取相对于图像的鼠标位置( e.GetPosition(image)
  • 如果你正在使用拉伸,你必须反向计算拉伸,以获得一个位图索引
  • 使用BitmapSource.CopyPixels将一个1像素的矩形复制到一个数组中(即只有鼠标移过的单个像素)
  • 检查检索到的像素值是否是透明像素
  • 链接地址: http://www.djcxy.com/p/44797.html

    上一篇: WPF Cursor on a partially transparent image

    下一篇: Lots of mysql Sleep processes