从这里提供的答案Can I choose a custom image for C# Windows Application Drag Drop functions?,为什么以下行:
return new Cursor(CreateIconIndirect(ref tmp));
导致编译器发出此错误:
最佳重载方法匹配' System.Windows.Input.Cursor.Cursor(string)'有一些无效的论点 参数1:无法转换为System.IntPtr'到' System.Runtime.InteropService.SafeHandle'
并且有办法解决它吗?
答案 0 :(得分:1)
这里的基本问题是,当您实际使用WPF API时,您正尝试使用适用于Winforms API的代码示例。该代码中使用的Cursor
类为System.Windows.Forms.Cursor
,而您正在使用的类实际上是System.Windows.Input.Cursor
。它们完全不同,包括完全不同的构造函数。
Winforms版本将接受IntPtr
值,表示本机Windows游标对象的句柄。但是WPF类只接受一些现有的.cur或.ani数据,可以通过Stream
(数据本身)或string
实例(文件名...这可以是{{1方案路径,如果你愿意,你可以使用嵌入式资源。
如果要在WPF中动态创建图像中的光标,可以:
pack:
构造函数,而是通过interop使用其他本机函数来检索游标数据,将其写入数组,然后将数组包装在您可以传递给WPF Cursor
构造函数的MemoryStream
。或者,Cursor
对象。例如,Custom cursor in WPF?(我特别喜欢this answer ...那里有几个好的,尽管它们都涉及在Cursor
命名空间处使用GDI +),或Rotating Cursor According to Rotated TextBox (再次,使用GDI +)。