Win32 - 如何获取给定系统光标位图的偏移量?
Posted
技术标签:
【中文标题】Win32 - 如何获取给定系统光标位图的偏移量?【英文标题】:Win32 - How to get offsets for a given system cursor bitmap? 【发布时间】:2019-10-17 20:11:28 【问题描述】:如果“点击点”是正确的名称,问题可以改写为“如何获得光标点击点?”。
通过结合使用LoadCursorW和GDI32函数的组合从游标全局资源中获取位图后。最后有了一个可以在另一个之上绘制的位图,我意识到我不知道如何根据给定光标的单击点位置来“移动”光标。
例如:虽然最典型的 ARROW 光标位图的点击点位于 [0, 0](左,上)。 HAND 光标,即出现在链接上的光标,向左平移了一点。
对于最典型的游标,由于是简单的2D概念,可以通过迭代所有位图像素来解决,将最上面的非透明像素作为点击点,或者如果有多个像素共享相同的 Y 坐标,然后返回一个 X 位于所有这些像素中心的值。
我希望没有任何光标指向下方的光标主题。
CURSORINFO 结构不包含此信息。它只为您提供当前鼠标 x 和 y 坐标。它们与您通过 GetCursorPos 等其他方式获得的坐标相同。
【问题讨论】:
docs.microsoft.com/en-us/windows/win32/api/winuser/… @user2120666 他们称之为热点,谢谢。我完全错过了。发布为答案,我会接受。 回答你的问题,我现在没空。 :) 【参考方案1】:Windows API 已经在ICONINFO 结构中提供了这些信息,可以通过调用GetIconInfo 来填充。
该函数接受图标或光标的句柄。
xHotspot 和 yHotspot 字段包含光标的“热点”。通过将这些坐标与当前/所需的光标位置对齐,您可以将光标绘制在正确的位置。
【讨论】:
以上是关于Win32 - 如何获取给定系统光标位图的偏移量?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 python 和 django 中使用 Pytz 根据给定的 UTC 偏移量转换数据和时间?