C#如何改变光标的点击/指向位置?

8
所以默认的光标是“箭头”光标,箭头的左上角(指针所在的位置)是与其他控件交互或单击的部分。如何将指针部分更改为箭头的尾巴?
我有一个自定义光标(位图图像),大小为16x16的圆圈,我希望它的中心是指针。我还有另一个类似箭头的自定义光标,向下左移,也是16x16,我希望光标的左下角成为指针。我认为光标类中有一个属性可以实现此功能,但我不确定它叫什么名字。
2个回答

8

这实际上是在 CUR 文件格式中指定的。

CUR 文件格式是 Microsoft Windows 中用于非动画光标的几乎相同的图像文件格式。这两种文件格式之间唯一的区别是用于识别它们的字节以及在 CUR 格式头中添加了一个热点;热点被定义为用户实际指向鼠标的光标图像左上角的像素偏移量(x、y 坐标)。

可以编辑 CUR 文件的程序通常允许您指定热点。更多信息可以在此问题中找到。


我想我应该明确说明我所拥有的是位图(png)而不是光标文件。是否有任何方法可以使用位图来实现这一点? - Jack
@Jack - 或许这个问题更接近你的需求? - CodeNaked

1

你想要的无法通过代码实现。我曾经也想做同样的事情,但是不可能。 实际上,Cursor类有一个叫做HotSpot的属性,这就是你想要改变的点。然而,这个属性是只读的。 唯一改变它的方法是在文件加载时(建议使用带有光标和图标插件的Paint .net(在网上搜索)来编辑光标文件)。重要的一点是:光标必须是一个文件,而不是资源或其他类似的东西(必须是文件系统上的文件)才能加载它。记住,我在其他方式上测试过程中遇到了困难。

我心中的想法是:只有在需要更改热点时才编辑光标文件,但是这需要你编写一个API,允许你在光标文件上更改热点。显然,我不知道这个文件是如何构建的,所以你必须从这里开始。

希望对你有所帮助。


1
这个问题或Rick的教程不是在运行时(即通过代码)从位图创建光标吗? - CodeNaked
你可以通过代码创建位图,但我不知道的是,你可以创建一个指向该光标的句柄,而无需将其保存为文件(即使在运行时创建它,我认为你必须将其保存在文件系统中),我在其他问题中读到了这个信息,对此很抱歉。然而,你必须重建整个光标才能更改其热点,这是我想向他展示的重要事情。 - Francesco Belladonna

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接