我有一个我最终希望移植到mono的应用程序,所以我试图避免使用p / invoke来完成此任务。
我想动态地加载一个游标,因为我有一个在应用程序中动态生成的位图。据我所知,不使用p / invoke的方法最安全的方法是创建一个.cur文件,然后将其加载到内存流中并使用Cursor(Stream)构造函数。但是我不知道如何创建一个.cur文件。
我在Microsoft知识库中找到了这篇文章,其中对格式进行了解释,但是我不确定在没有互操作调用的情况下如何使用它。 How To Create an Alpha Blended Cursor or Icon in Windows XP
是否有其他人可以使用托管解决方案来完成此任务?
最佳答案
这是VB.NET中即时创建位图并将其转换为光标的示例。不知道这将对7年以上的人有所帮助,但是可以这样:
Private Function GetCircleCursor(iDiameter As Integer) As Cursor
Dim oBitmap As Bitmap = New Bitmap(Convert.ToInt32(iDiameter), Convert.ToInt32(iDiameter), System.Drawing.Imaging.PixelFormat.Format32bppArgb)
Using g As System.Drawing.Graphics = Graphics.FromImage(oBitmap)
g.Clear(Color.Transparent)
g.DrawEllipse(New System.Drawing.Pen(Color.White, 3), New Rectangle(0, 0, iDiameter, iDiameter))
g.DrawEllipse(New System.Drawing.Pen(Color.Black, 1), New Rectangle(0, 0, iDiameter, iDiameter))
End Using
Return New Cursor(oBitmap.GetHicon)
End Function