VB.net中的游标大小有限制吗?

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

我想在我的应用程序中使用的光标要大得多。 当我使用Mouse.SetCursor(_CustomCursor)时,一个小光标显示正确。 当select更大的光标时,我看不到任何光标。 这似乎是光标加载正确,但无法显示。

注意:目前静态.cur游标是可以接受的。

有没有办法在我的应用程序中显示更大的游标,如果有大小的限制,它是什么?

光标大小是否有限制?

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

要获得可以使用的Cursor的最大大小,您应该查询SystemParameters.CursorHeight和SystemParameters.CursorWidth属性。

如MSDN所述,这些属性分别映射到SM_CYCURSORSM_CXCURSOR属性。 正如你可以在MSDN阅读

SM_CXCURSOR 13游标的宽度,以像素为单位。 系统不能创建其他尺寸的光标。

SM_CYCURSOR 14游标的高度,以像素为单位。 系统不能创建其他尺寸的光标。

所以我设法找到了解决这个问题的方法。

正如在Bitmap的Cursor中所提到的,可以从位图创建任意大小的游标。

实现这个的代码如下:

 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个像素的限制适用于任何维度的光标,任何更大的将不会显示。