VB.net中的游标大小是否有限制

时间:2013-01-04 13:30:18

标签: wpf windows vb.net cursor

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

我想在我的应用程序中使用的光标要大得多。使用Mouse.SetCursor(_CustomCursor)时,正确显示小光标。选择较大的光标时,我看不到任何光标。看起来光标正确加载但无法显示。

注意:目前可以使用静态.cur游标。

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

2 个答案:

答案 0 :(得分:1)

  

游标大小是否有限制?

是的,这是系统限制。不只是对于VB.NET ......

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

如MSDN所述,这些属性分别映射到SM_CYCURSORSM_CXCURSOR属性。 您可以在MSDN

中阅读
  

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

  

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

答案 1 :(得分:0)

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

Cursor from 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

热点自动设置为位图的中心。以下是结果预览:

Large Blue Cursor

此代码适用于Windows窗体应用程序。使用WPF应用程序时,游标的无效扩展名为'抛出异常。将考虑解决它(欢迎任何建议)。

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