gpt4 book ai didi

部分透明图像上的 WPF 光标

转载 作者:行者123 更新时间:2023-12-04 12:38:27 28 4
gpt4 key购买 nike

我有一个包含透明区域的 png,并将其设置为图像标签。
当光标位于图像的不透明部分上时,如何将光标设置为手?
谢谢

最佳答案

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

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

  • 继续并以正常方式调用 HitTest 。
  • 对于每个 HitTestResult你回来看看是不是Image如果是,鼠标下方是否有透明像素
  • 当您在图像的非图像或不透明像素上受到打击时,请停止。
  • 决定Cursor基于鼠标所在位置的值

  • 要确定鼠标是否在图像的透明像素上:
  • 获取鼠标相对于图像的位置(e.GetPosition(image))
  • 如果您使用拉伸(stretch),您必须在此时反向计算拉伸(stretch)以获得位图索引
  • 使用BitmapSource.CopyPixels将一个 1 像素的矩形复制到一个数组中(即只有鼠标悬停的单个像素)
  • 检查检索到的像素值是否为透明像素
  • 关于部分透明图像上的 WPF 光标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2250965/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com