调用外部鼠标样式,一般情况有两种,一种是调用鼠标文件cur、ani文件(cur是静态光标文件,ani是动画光标文件)。
做法,自定义光标文件嵌入dll和调用的方法。把鼠标样式cur文件添加入资源文件(这晓得吧,就是打开项目的property,点击资源,ctrl+v进去),记住在Resources里面选择cur文件,点击属性,修改生成操作为嵌入的资源。(这样做事为了控件封装时候一起封装,如果你是在from中用,那当我没说)
代码如下: this.Cursor = new Cursor(GetType(), "Resources.hmove.cur"); 记住GetType()是为了获得Resources在哪个项目下,如果报错,请检查名字是否正确?是否选定资源为嵌入的资源? 另外一种是直接把png、jpg图片做为鼠标光标。
public void SetCursor(Bitmap cursor, Point hotPoint) { int hotX = hotPoint.X; int hotY = hotPoint.Y; Bitmap myNewCursor = new Bitmap(cursor.Width*2 - hotX, cursor.Height*2 - hotY); Graphics g = Graphics.FromImage(myNewCursor); g.Clear(Color.FromArgb(0, 0, 0, 0)); g.DrawImage(cursor, cursor.Width - hotX, cursor.Height - hotY, cursor.Width, cursor.Height); IntPtr iptr = myNewCursor.GetHicon(); this.FindForm().Cursor = new Cursor(iptr); g.Dispose(); myNewCursor.Dispose(); cursor.Dispose(); } 调用方法 Bitmap a=(Bitmap)Bitmap.FromFile("myCur.png"); SetCursor(a, new Point(0, 0));
第二种可以向第一种转换,使用ArtCursors鼠标编辑器,不会用也没关系,只需要导入png,导出cur就成。因为我验证了第二种在调用多次的时候,会出现“GDI+一般性错误”的报错提示。所以最好是调用一次储存Cursor变量是最好的解决办法。切忌反复调用~