如何设置自定义光标?我已经阅读了几个问题和答案,并且找不到任何有用的东西。
我正在创建一个图像查看器,目前正在处理平移功能。我有一个函数,在任何缩放/缩放应用于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
内,则会一遍又一遍地创建它。除此之外,它不起作用。我收到以下错误:
我将创建两个游标(pannable和panning),一次,然后更改控制器'游标来回。
我该怎么办?
源代码位于Github。
答案 0 :(得分:2)
也许试试:
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 :(得分:0)
对于VS 2019:
someControl.Cursor = new Cursor(Properties.Resources.yourPNG.GetHicon());
请不要忘记将具有所需透明度的“ yourPNG.png”添加到项目中作为资源。