【问题标题】:How to set a custom cursor?如何设置自定义光标?
【发布时间】:2017-10-26 07:40:11
【问题描述】:

如何设置自定义光标?我已经阅读了几个问题和答案,但找不到任何有用的东西。

我正在创建一个图像查看器,目前正在开发平移功能。我有一个在将任何比例/缩放应用于 PictureBox 后运行的函数:

private void CheckOverflow()
{
    if (ImageBox.Width > BottomPanel.Width || ImageBox.Height > BottomPanel.Height)
    {
        BottomPanel.Cursor = Cursors.Hand; // set a custom cursor "pannable"
    }
    else if (BottomPanel.Cursor != Cursors.Default)
    {
        BottomPanel.Cursor = Cursors.Default;
    }
}

如果PictureBox 溢出Panel,则它是可平移的。现在,我正在使用 Windows 光标,它工作正常,但我想将 Hand 光标更改为自定义光标。

我有一个名为pannable.cur 的自定义光标。我通过Project->Properties->Resources窗口将其添加到项目中,并将其Build Action属性更改为Embedded Resource

现在,我应该如何以及在哪里创建光标?我相信是这样的:

Cursor Pannable = new Cursor(GetType(), "pannable.cur");

但是我应该把它放在哪里呢?如果我把它放在CheckOverflow 中,它会被一遍又一遍地创建。除此之外,它不起作用。我收到以下错误:

我将创建两个光标(可平移和平移),一次,然后来回更改控件的光标。

我该怎么办?

源代码可在Github获取。

【问题讨论】:

    标签: c# winforms cursor mouse


    【解决方案1】:

    不妨试试:

    using (MemoryStream stream = new MemoryStream(Properties.Resources.pannable))
    {
        BottomPanel.Cursor = new Cursor(stream);
    }
    

    Properties.Resource.pannable 返回一个字节数组,MemoryStream 将其转换为流,因此您可以使用 Cursor(Stream) 构造函数。见这里 (https://msdn.microsoft.com/en-us/library/system.windows.forms.cursor(v=vs.110).aspx)

    如果你不关心处理,那么只需使用:

    BottomPanel.Cursor = new Cursor(new MemoryStream(Properties.Resources.pannable));
    

    【讨论】:

    • +1 虽然这对我有用,但我决定使用稍微不同的版本,因为它won't let me 使用透明/彩色光标。
    【解决方案2】:

    对于 VS 2019:

    someControl.Cursor = new Cursor(Properties.Resources.yourPNG.GetHicon());
    

    不要忘记将具有任何透明度的“yourPNG.png”作为资源添加到您的项目中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-21
      • 1970-01-01
      • 1970-01-01
      • 2010-09-30
      • 1970-01-01
      • 2017-03-10
      相关资源
      最近更新 更多