1

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

然而,我想在我的应用程序中使用的光标要大得多。当我使用Mouse.SetCursor(_CustomCursor). When a larger cursor is chosen, I don't see any cursor. 光标似乎正确加载但无法显示。

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

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

4

2 回答 2

1

所以我设法找到解决尺寸限制问题的方法。

正如BitMap 中的光标所提到的,可以从位图中创建任意大小的光标。

实现这一点的代码如下:

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 像素的限制应用于光标的任何尺寸,任何更大的都不会显示。

于 2013-01-07T08:15:41.590 回答
1

光标大小有限制吗?

是的,这是系统限制。不仅适用于 VB.NET...

要获得可以使用的最大光标大小,您应该查询SystemParameters.CursorHeightSystemParameters.CursorWidth属性。

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

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

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

于 2013-01-04T13:44:39.483 回答