visual studio -在c# Winforms中自定义光标

本文关键字:自定义 光标 Winforms studio visual | 更新日期: 2023-09-27 18:01:35

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

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

visual studio -在c# Winforms中自定义光标

由于某些原因,游标类对要读取的内容太挑剔了。您可以使用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。净:

'(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

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

在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;

目的:当用户需要在winforms UI中执行cut活动时,将光标更改为自定义光标

这样做就可以了

  1. 添加图标文件(例如cut.ico)到项目
  2. 现在添加图标到项目资源要添加到资源,右键单击project->properties->Resources,现在从Resources
  3. 上的项目文件夹(U在第1点添加到项目文件夹)中删除ico文件。这段代码应该能达到这个目的
System.Windows.Forms.Cursor _customCutCursor = 
   new System.Windows.Forms.Cursor(Properties.Resources.cut.Handle);