C#更改光标的点击/指向位置?

时间:2011-07-23 02:34:21

标签: c# winforms cursor

因此默认光标是“箭头”光标,箭头的左上角(点所在的位置)是点击或与其他控件交互的部分。如何更改指向部分以说出箭头的尾部?

我所拥有的是一个自定义光标(位图图像​​),它是一个16x16大小的圆,我希望它的中心是指针。我有另一个自定义箭头状光标,指向左下方也是16x16,我希望光标的左下角是指针。我认为游标类中有一个属性,但我不确定它叫什么。

3 个答案:

答案 0 :(得分:7)

这实际上是在CUR file format中指定的。

  

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

可编辑CUR文件的程序通常允许您指定热点。有关详细信息,请参阅this question

答案 1 :(得分:2)

这里有一篇关于这个主题的相当全面的文章:http://www.switchonthecode.com/tutorials/csharp-tutorial-how-to-use-custom-cursors

它包括设置光标,通过自定义结构和位图创建光标,以及将它们放在一个应用程序中。

答案 2 :(得分:1)

您希望通过代码无法完成。我想做同样的事情,但这是不可能的。 实际上,Cursor class有一个名为HotSpot的属性,这是您想要更改的点。但是这个属性是readonly。 改变这个的唯一方法是在文件加载时(在.cur文件中,我建议你使用带有光标的Paint .net和图标插件(在网上搜索)来编辑光标)。重要的是:游标必须是文件而不是资源或类似的东西(必须是文件系统上的文件)才能加载它。记住它,我在其他方面测试时间很糟糕。

我想到的想法是:只在需要更改热点时编辑光标文件,但这需要您编写一个允许您更改光标文件上的热点的API。我很不清楚这个文件是如何构建的,所以你必须从这里继续。

希望这很有用