【发布时间】:2011-08-18 03:05:05
【问题描述】:
我有一组游标(.cur 文件),我想在我的 WPF/VB.net 应用程序中使用它们,而无需在系统范围内更改游标。我假设我会以某种方式使用每个 WPF 对象的“光标”属性,但我不确定如何使用自己的光标。
我应该怎么做才能做到这一点?
【问题讨论】:
标签: wpf vb.net mouse-cursor
我有一组游标(.cur 文件),我想在我的 WPF/VB.net 应用程序中使用它们,而无需在系统范围内更改游标。我假设我会以某种方式使用每个 WPF 对象的“光标”属性,但我不确定如何使用自己的光标。
我应该怎么做才能做到这一点?
【问题讨论】:
标签: wpf vb.net mouse-cursor
您是否尝试过使用文件路径重载来创建游标?
Cursor cursor = new Cursor("<path>");
或者关于那件事的流?
一旦你有了一个光标对象,你就可以将它分配给应该显示它的控件。 (FrameworkElement.Cursor)
如果您将光标用作资源,例如在项目的光标文件夹中
您可以在 XAML 中的任何位置引用它,例如
<Window Cursor="Cursors/wait_il.cur">...
【讨论】:
假设光标位于 /Resources/ 文件夹中并且构建操作设置为 Resource:
声明:
<TextBlock x:Key="MyCursor" Cursor="/Resources/grab.cur" />
然后在初始化器中应用到主窗口:
this.Cursor = (FindResource("MyCursor") as TextBlock).Cursor;
【讨论】:
好吧,因为 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;
【讨论】: