【问题标题】:Custom cursor in C# WinformsC# Winforms 中的自定义光标
【发布时间】:2011-07-10 02:09:33
【问题描述】:

有人知道使用自定义光标的简单方法吗?我的光标有 .cur 和 .png。我尝试将其作为资源添加到我的项目中,并尝试将其作为文件包含在项目中。理想情况下,我想嵌入它,但我只想让它工作。

当我使用Cursor cur = new Cursor("mycursor.cur") 时,我得到“图像格式无效。图像文件可能已损坏”。我试过这个http://mahesg.wordpress.com/2008/02/09/embedding-cursor/,但没有用。使用WinForm1.Properties.Resources.mycursor 返回一个字节[],我不知道如何将其转换为游标类型。

【问题讨论】:

    标签: c# visual-studio cursor


    【解决方案1】:

    由于某种原因,游标类对它要读取的内容过于挑剔。您可以使用 windows API 自己创建句柄,然后将其传递给游标类。

    C#:

    //(in a class)
    public static Cursor ActuallyLoadCursor(String path) {
        return new Cursor(LoadCursorFromFile(path))
    }
    [System.Runtime.InteropServices.DllImport("user32.dll")]
    private static extern IntPtr LoadCursorFromFile(string fileName);
    

    VB.Net:

    '(in a class)'
    Public Shared Function ActuallyLoadCursor(path As String) As Cursor
        Return New Cursor(LoadCursorFromFile(path))
    End Function
    <System.Runtime.InteropServices.DllImport("user32.dll")>
    Private Shared Function LoadCursorFromFile(fileName As String) As IntPtr
    End Function
    

    【讨论】:

    • 非常感谢@Strilanc,这一直困扰着我多年。我现在可以完成我的论文项目了!! :D
    【解决方案2】:

    new Cursor(new MemoryStream(Properties.Resources.mycursor))

    【讨论】:

    • 试过了,还是没有改变。
    • 确保它实际上是一个.cur 文件,它不同于任何其他图像格式。
    • 我认为 .cur 文件可能有问题。我将它保存在 Photoshop 中,它为我提供了 .cur 的选项,所以我认为它是一个有效的 .cur 文件。一定是一个过时的插件。光标使用 PNG 而非 CUR 工作。有区别吗?
    • 这太令人惊讶了。如果在鼠标属性中选择它会发生什么?
    【解决方案3】:

    在 C# 中为光标添加自定义图标:

    将图标文件添加到项目资源(例如:Processing.ico)

    并且在图像的属性窗口中将“Build Action”切换为“Embedded”

    Cursor cur = new Cursor(Properties.Resources.**Imagename**.Handle);
    this.Cursor = cur;
    

    例如:

    Cursor cur = new Cursor(Properties.Resources.Processing.Handle);
    this.Cursor = cur;
    

    【讨论】:

    • “将图标文件添加到项目资源” 这是怎么做到的?在解决方案资源管理器中将光标文件拖放到项目的Resources.resx 上?
    • "将图标文件添加到项目资源" 这是怎么做的?在解决方案资源管理器中将光标文件拖放到项目的 Resources.resx 上?如何?请不要在你的答案中含糊或重复。
    • "Add Icon file to project resources"意思是打开Project properties -> Ressources -> "Add ressource" -> "Add exisitng file"
    【解决方案4】:

    目标:当用户需要在示例winforms UI中进行剪切活动时,将光标更改为自定义光标

    这样做会奏效

    1. 将图标文件(例如cut.ico)添加到项目中
    2. 现在将图标添加到项目资源 要添加到资源,请右键单击项目-> 属性-> 资源现在将 ico 文件从资源上的项目文件夹(U 添加到第 1 点中的项目文件夹)中拖放
    3. 这段代码应该可以解决问题
    System.Windows.Forms.Cursor _customCutCursor = 
       new System.Windows.Forms.Cursor(Properties.Resources.cut.Handle);
    

    【讨论】:

      猜你喜欢
      • 2011-02-17
      • 1970-01-01
      • 1970-01-01
      • 2011-03-28
      • 1970-01-01
      • 2010-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多