【问题标题】:How to change the mouse pointer to an Image when clicked on it in c#如何在c#中单击图像时将鼠标指针更改为图像
【发布时间】:2011-11-11 12:54:08
【问题描述】:

如何在c#中单击图像时将鼠标指针更改为图像?

【问题讨论】:

  • WinForms、WPF、ASP.NET(这有点不可能)什么?这个问题很模糊。

标签: c# .net image graphics drawing


【解决方案1】:

MSDN article 解释了如何使用 WPF 进行操作。只需将他们的下拉菜单更改为您感兴趣的图像的 OnClick。

您也可能会挂接到 WinForms 中的 OnClick 事件,但我没有现成的示例。如果您使用的是 WinForms 而不是 WPF,请编辑您的问题以指定!

您可以使用以下方法创建自己的自定义光标:

    yourCursor = new Cursor(someImageStream);

这是我验证加载自定义光标的一种方式。这当然有效,并且结合了您自己的评论以及我在下面链接的博客文章中的一些信息。

  var image = (Bitmap)Bitmap.FromFile(@"c:\cursorImage.bmp");
  IntPtr ptr = image.GetHicon();
  var handle = new SafeFileHandle(ptr, true);
  var yourCursor = System.Windows.Interop.CursorInteropHelper.Create(handle);
  Cursor = yourCursor;

this blog article 提供了有关加载图像以在自定义光标中使用的更详细说明,这可能更可靠,但考虑到上述内容,看起来比您需要的更多。

【讨论】:

  • 谢谢。但是它会产生参数异常,并说图像格式可能无效。
  • 你正在加载什么样的图像?确保您正在加载的图像类型与您尝试保存到流中的图像类型相匹配。
  • 谢谢。我得到了代码检查link
  • 我在这里看到了类似的代码:stackoverflow.com/questions/6991023/wpf-cursor-casting-problem/… 我创建了一个Cursor c = new Cursor(ptr);,然后通过传递c.Handlefalse 来创建SafeFileHandle,而不是ptrtrue ,作者承认说文档说要使用true,但无法让它工作。也许是因为使用了新的Cursor 而没有直接发送ptr。但是我能够让该链接的代码工作,以防有人尝试上面的代码并且不能。但它们基本上是一样的。
【解决方案2】:

问题含糊/不清楚,但也许您想更改系统光标(不仅仅是您的应用程序)?这是SetSystemCursor 的 pinvoke 信息的链接。请注意,这被认为是错误的形式。

【讨论】:

  • 感谢论坛中提供的代码运行良好。
  • @rainbower,请注意 rtalbot 所说的:您真的不应该更改系统光标。相反,您应该只在应用程序的窗口内更改光标。
【解决方案3】:

this.Cursor = Cursors.WaitCursor;

处理显示图像的控件的单击事件。在此事件处理程序中,将控件的光标属性更改为所需的 - 您当然可以构建自己的光标对象,请参阅Cursor

【讨论】:

  • @rainbower:具体解释一下?
猜你喜欢
  • 2018-10-12
  • 2020-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-28
  • 2012-06-07
  • 1970-01-01
  • 2016-07-21
相关资源
最近更新 更多