Wpf VB.net中对光标大小有限制吗

Wpf VB.net中对光标大小有限制吗,wpf,windows,vb.net,cursor,Wpf,Windows,Vb.net,Cursor,我的应用程序在运行时使用从预定义文件(.cur)加载的自定义光标。我知道windows对高DPI设备使用标准的32x32像素光标或48x48像素光标 但是,我想在应用程序中使用的光标要大得多。当我使用鼠标时,小光标会正确显示。SetCursor(\u CustomCursor)。选择较大的光标时,我看不到任何光标。光标似乎加载正确,但无法显示 注意:当前可接受静态.cur光标 在我的应用程序中是否有显示较大游标的方法?如果大小有限制,是什么 光标大小是否有限制 是的,这是一个系统限制。不仅仅是V

我的应用程序在运行时使用从预定义文件(.cur)加载的自定义光标。我知道windows对高DPI设备使用标准的32x32像素光标或48x48像素光标

但是,我想在应用程序中使用的光标要大得多。当我使用
鼠标时,小光标会正确显示。SetCursor(\u CustomCursor)
。选择较大的光标时,我看不到任何光标。光标似乎加载正确,但无法显示

注意:当前可接受静态.cur光标

在我的应用程序中是否有显示较大游标的方法?如果大小有限制,是什么

光标大小是否有限制

是的,这是一个系统限制。不仅仅是VB.NET

要获得可以使用的最大光标大小,应查询和属性

如MSDN所述,这些属性分别映射到
SM_cCursor
SM_cCursor
属性。 正如你在书中读到的

SM_CXCURSOR 13 光标的宽度,以像素为单位系统无法创建其他大小的游标。

SM_CYCURSOR 14 光标的高度,以像素为单位系统无法创建其他大小的游标。

光标大小是否有限制

是的,这是一个系统限制。不仅仅是VB.NET

要获得可以使用的最大光标大小,应查询和属性

如MSDN所述,这些属性分别映射到
SM_cCursor
SM_cCursor
属性。 正如你在书中读到的

SM_CXCURSOR 13 光标的宽度,以像素为单位系统无法创建其他大小的游标。

SM_CYCURSOR 14 光标的高度,以像素为单位系统无法创建其他大小的游标。


因此,我设法找到了解决尺寸限制问题的方法

如上所述,用户可以从位图创建任意大小的光标

实现这一点的代码如下:

Dim bm As New Bitmap(60, 60)                 'Or from a bitmap file
Dim g As Graphics = Graphics.FromImage(bm)   
g.FillRectangle(Brushes.Blue, 0, 0, 60, 60)  'For a simple blue rectangle cursor
Dim ptrCur As IntPtr = bm.GetHicon
Dim CustomCursor As Cursor
CustomCursor = New Cursor(ptrCur)
Me.Cursor = CustomCursor                     'Set the application cursor to be custom
热点将自动设置为位图的中心。以下是结果预览:

此代码在Windows窗体应用程序上运行良好。对于WPF应用程序,将引发“无效的游标扩展名”异常。将研究解决问题(欢迎任何建议)


编辑:在WPF中,对光标的任何维度应用96像素的限制,任何较大的都不会显示。

因此我设法找到了解决大小限制问题的方法

如上所述,用户可以从位图创建任意大小的光标

实现这一点的代码如下:

Dim bm As New Bitmap(60, 60)                 'Or from a bitmap file
Dim g As Graphics = Graphics.FromImage(bm)   
g.FillRectangle(Brushes.Blue, 0, 0, 60, 60)  'For a simple blue rectangle cursor
Dim ptrCur As IntPtr = bm.GetHicon
Dim CustomCursor As Cursor
CustomCursor = New Cursor(ptrCur)
Me.Cursor = CustomCursor                     'Set the application cursor to be custom
热点将自动设置为位图的中心。以下是结果预览:

此代码在Windows窗体应用程序上运行良好。对于WPF应用程序,将引发“无效的游标扩展名”异常。将研究解决问题(欢迎任何建议)


编辑:在WPF中,对光标的任何尺寸应用96像素的限制,任何较大的尺寸都不会显示。

游戏等如何创建自己的自定义光标?他们不使用vb,对于starters@ChristianSauer我的新答案中的方法可能会取消对光标的一些大小限制,并允许显示任何自定义光标,也许游戏开发人员也遵循类似的方法。游戏等如何创建自己的自定义光标?他们不使用vb,对于starters@ChristianSauer我的新答案中的方法可能会删除对游标的一些大小限制,并允许显示任何自定义游标,也许游戏开发人员也遵循类似的方法。正如您所提到的,这只适用于winforms实现,而不适用于WPF。。。此外,此解决方案的主要问题是无法选择热点的位置…正如您所提到的,这只适用于winforms实现,而不适用于WPF。。。此外,此解决方案的主要问题是无法选择热点所在的位置。。。