【问题标题】:C# Changing the cursor's clicking/pointing position?C#更改光标的单击/指向位置?
【发布时间】:2011-07-23 02:34:21
【问题描述】:

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

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

【问题讨论】:

    标签: c# winforms mouse-cursor


    【解决方案1】:

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

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

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

    【讨论】:

    • 我想我应该指定我拥有的是位图 (png) 而不是光标文件。有没有办法用位图做到这一点?
    • @Jack - 也许这个question 更接近你的需要?
    【解决方案2】:

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

    我的想法是:仅在需要更改热点时编辑光标文件,但这需要您编写一个允许您更改光标文件上的热点的 api。我显然不知道这个文件是如何构建的,所以你必须从这里继续。

    希望对你有用

    【讨论】:

    • 这不是question 或 Rick 的教程在运行时(即通过代码)从位图创建光标吗?
    • 嗯,您可以通过代码创建位图,我不知道的是,您可以在不作为文件的情况下为该光标创建一种句柄(我认为您必须将其保存在文件中系统,即使你在运行时创建它),我在其他一些问题上读到它,对此感到抱歉。但是,您必须重建整个光标以更改其热点,这是我想向他展示的重要内容
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多