1

私のアプリケーションは、実行時に事前定義されたファイル(.cur)からロードされたカスタムカーソルを利用します。Windowsは、高DPIデバイスに標準の32x32ピクセルカーソルまたは48x48ピクセルカーソルを使用していることを知っています。

ただし、アプリケーションで使用したいカーソルははるかに大きくなっています。を使用すると、小さなカーソルが正しく表示されますMouse.SetCursor(_CustomCursor)。大きいカーソルを選択すると、カーソルが表示されません。カーソルは正しくロードされているように見えますが、表示できません。

注:現在、静的な.curカーソルを使用できます。

アプリケーションでより大きなカーソルを表示する方法はありますか?サイズに制限がある場合、それは何ですか?

4

2 に答える 2

1

カーソルサイズに制限はありますか?

はい、それはシステムの制限です。VB.NETだけではありません...

使用できるカーソルの最大サイズを取得するには、SystemParameters.CursorHeightプロパティとSystemParameters.CursorWidthプロパティをクエリする必要あります

MSDNで述べられているように、これらのプロパティはそれぞれSM_CYCURSORSM_CXCURSORプロパティにマップされます。あなたがMSDNで読むことができるように

SM_CXCURSOR 13カーソルの幅(ピクセル単位)。システムは他のサイズのカーソルを作成できません。

SM_CYCURSOR 14カーソルの高さ(ピクセル単位)。システムは他のサイズのカーソルを作成できません。

于 2013-01-04T13:44:39.483 に答える
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 に答える