使用自定义光标WinForms
有没有办法在winforms中使用自定义光标?
似乎没有选择。 但是当我尝试手动添加游标作为资源时,然后从代码中调用它,它表示它无法从byte []类型转换为Cursor。
在C#中向游标添加自定义图标:
将图标文件添加到项目资源(例如:Processing.ico)
并在图像开关“Build Action”到“Embedded”的属性窗口中
Cursor cur = new Cursor(Properties.Resources.**Imagename**.Handle); this.Cursor = cur; Ex: Cursor cur = new Cursor(Properties.Resources.Processing.Handle); this.Cursor = cur;
从Cursor
类的MSDN文档 (带有小的更正):
// The following generates a cursor from an embedded resource. // To add a custom cursor, create or use an existing 16x16 bitmap // 1. Add a new cursor file to your project: // File->Add New Item->Local Project Items->Cursor File // 2. Select 16x16 image type: // Image->Current Icon Image Types->16x16 // --- To make the custom cursor an embedded resource --- // In Visual Studio: // 1. Select the cursor file in the Solution Explorer // 2. Choose View->Properties. // 3. In the properties window switch "Build Action" to "Embedded" // On the command line: // Add the following flag: // /res:CursorFileName.Cur,Namespace.CursorFileName.Cur // // Where "Namespace" is the namespace in which you want to use // the cursor and "CursorFileName.Cur" is the cursor filename. // The following line uses the namespace from the passed-in type // and looks for CustomCursor.MyCursor.Cur in the assemblies manifest. // NOTE: The cursor name is case sensitive. this.Cursor = new Cursor(GetType(), "MyCursor.Cur");
我使用过User32.dll的LoadCursorFromFile()
方法。 网上有很多样本。
要么
Cursor
类型的ctor也有一个IO.Stream
重载。 将byte[]
加载到MemoryStream
并将其提供给新的Cursor
。
将文件添加到资源后,在映像的属性窗口中:将Build Action
切换到Embedded Resource
并写入代码:
"name of control".Cursor = new System.Windows.Forms.Cursor(Properties.Resources."name of image".Handle);