我的应用程序使用在运行时从预定义文件(.cur)加载的自定义游标。我知道Windows使用标准的32x32像素光标或48x48像素光标用于高DPI设备。
我想在我的应用程序中使用的光标要大得多。使用Mouse.SetCursor(_CustomCursor)
时,正确显示小光标。选择较大的光标时,我看不到任何光标。看起来光标正确加载但无法显示。
注意:目前可以使用静态.cur游标。
有没有办法在我的应用程序中显示更大的游标,如果大小有限制,它是什么?
答案 0 :(得分:1)
游标大小是否有限制?
是的,这是系统限制。不只是对于VB.NET ......
要获取可以使用的光标的最大大小,您应该查询SystemParameters.CursorHeight和SystemParameters.CursorWidth属性。
如MSDN所述,这些属性分别映射到SM_CYCURSOR
和SM_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
热点自动设置为位图的中心。以下是结果预览:
此代码适用于Windows窗体应用程序。使用WPF应用程序时,游标的无效扩展名为'抛出异常。将考虑解决它(欢迎任何建议)。
编辑:在WPF中,对光标的任何尺寸都应用了96像素的限制,不会显示更大的内容。