Отображение пользовательского курсора в приложении WPF - PullRequest
4 голосов
/ 04 мая 2011

У меня есть набор курсоров (файлы .cur), которые я хочу использовать с моим приложением WPF / VB.net, без изменения курсоров в масштабе всей системы. Я предполагаю, что я каким-то образом использовал бы свойство курсора каждого объекта WPF, но я не уверен, как использовать свои собственные курсоры.

Что я должен сделать для этого?

Ответы [ 3 ]

0 голосов
/ 04 мая 2011

при условии, что курсор находится в папке / Resources /, а для действия сборки установлено значение Resource:

Объявляет:

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

Затем примените к главному окну в инициализаторе:

this.Cursor = (FindResource("MyCursor") as TextBlock).Cursor;
0 голосов
/ 04 мая 2011

Хорошо, так как HB на меня напал, вот класс: 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;
0 голосов
/ 04 мая 2011

Вы пытались использовать перегрузку пути к файлу для создания курсора?

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

Или поток в этом отношении?

Когда у вас есть объект курсора, вы можете назначить его элементам управления, где он должен отображаться. (FrameworkElement.Cursor)


Если вы используете курсор в качестве ресурса, например, в папке курсоров в вашем проекте

screen

вы можете ссылаться на него где угодно в вашем XAML, например

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