调整自定义光标大小

时间:2016-11-28 14:10:02

标签: c#

我的.cur文件出了问题。

我将光标设置为某个自定义光标的窗口行为:

 Mouse.OverrideCursor = (Cursor)mAssociatedObject.Resources["MoveCursor"];

在窗口中,我将光标定义为资源:

  <Cursor x:Key="MoveCursor">Resources/cur2.cur</Cursor>

这很好用。

问题是如果用户在Windows设置中更改了光标大小,我的光标仍然是32x32的大小。

有人知道这方面的解决方案吗?

谢谢

1 个答案:

答案 0 :(得分:0)

据我所知,你的问题有两部分:

  1. 如何知道Windows设置中定义的光标大小
  2. 按照上述尺寸绘制自定义光标
  3. 对于第1部分,您可以使用@Hans Passant建议的SystemParameters.CursorHeight

    对于第二部分,您可以参考下面使用Cursor.DrawStretched()

    的代码

    以下是MSDN的示例代码:

    private void DrawCursorsOnForm(Cursor cursor)
    {
       // If the form's cursor is not the Hand cursor and the 
       // Current cursor is the Default, Draw the specified 
       // cursor on the form in normal size and twice normal size.
       if(this.Cursor != Cursors.Hand & 
         Cursor.Current == Cursors.Default)
       {
          // Draw the cursor stretched.
          Graphics graphics = this.CreateGraphics();
          Rectangle rectangle = new Rectangle(
            new Point(10,10), new Size(cursor.Size.Width * 2, 
            cursor.Size.Height * 2)); // <<<<<<<<< you will need to define size based on SystemParameters.CursorHeight here
          cursor.DrawStretched(graphics, rectangle);
    
          // Dispose of the cursor.
          cursor.Dispose();
       }
    }