在WPF应用程序中显示自定义光标

时间:2011-05-03 23:34:44

标签: wpf vb.net mouse-cursor

我有一组游标(.cur文件),我想用于我的WPF / VB.net应用程序,而不需要在系统范围内更改游标。我假设我会以某种方式使用每个WPF对象的“游标”属性,但我不知道如何使用我自己的游标。

我该怎么做才能做到这一点?

3 个答案:

答案 0 :(得分:0)

您是否尝试过使用文件路径重载来创建游标?

Cursor cursor = new Cursor("<path>");

或者那件事的流?

一旦有了光标对象,就可以将它分配给应该显示它的控件。 (FrameworkElement.Cursor


如果您将光标用作资源,例如在项目的游标文件夹中

screen

您可以在XAML的任何地方引用它,例如

<Window Cursor="Cursors/wait_il.cur">...

答案 1 :(得分:0)

假设游标位于/ Resources /文件夹中,并且构建操作设置为资源:

声明:

<TextBlock x:Key="MyCursor" Cursor="/Resources/grab.cur" />

然后应用于初始化程序中的主窗口:

this.Cursor = (FindResource("MyCursor") as TextBlock).Cursor;

答案 2 :(得分:0)

好的,因为H.B在我身边咆哮是一个班级:p

public class CustomCursor
{
    private System.Windows.Input.Cursor _cursor = null;
    public System.Windows.Input.Cursor Cursor
    {
        get
        {
            if (_cursor == null)
                _cursor = GetCursor();
            return _cursor;
        }
    }

    public string RelativePath { get; set; }

    public CustomCursor()
    {
    }

    public CustomCursor(string relativePath)
    {
        RelativePath = relativePath;
    }

    public System.Windows.Input.Cursor GetCursor()
    {
        if (RelativePath == null)
            throw new ArgumentNullException("You must set RelativePath first");

        string directory = Directory.GetCurrentDirectory();
        string absPath = directory + '\\' + RelativePath;

        if (!File.Exists(absPath))
            throw new FileNotFoundException();

        return new System.Windows.Input.Cursor(absPath);
    }
}

在后面的代码中使用,如下所示:

this.Cursor = new CustomCursor("grab.cur").Cursor;

或在xaml中声明:

<local:CustomCursor x:Key="MyCursor" RelativePath="grab.cur"/>

像这样引用:

this.Cursor = (FindResource("MyCursor") as CustomCursor).Cursor;