0

我正在使用hand2.cur在我的 C#-WPF 应用程序中命名的自定义光标。我已将光标添加到一个名为的文件夹中,该文件夹Images包含我在应用程序中使用的所有图像。但是我意识到我不能添加相对路径来使用我的自定义光标:

    Cursor newCur = new Cursor("Images\\hand2.cur");
    window.Cursor = newCur;

所以我用了这个:

    string absolute = System.IO.Path.GetFullPath("hand2.cur");
    Cursor newCur = new Cursor(absolute);
    window.Cursor = newCur;

这会尝试在文件夹中查找hand2.cur文件\bin\Release。所以我在那里添加了文件,我让它工作了。

但问题是,如果我Publish这个应用程序并在另一台计算机上使用它,它就不起作用。现在问题出在光标文件路径上,因为如果我在评论这 3 行之后部署它,它就可以正常工作。那么我该怎么做才能纠正这个问题呢?

Image在我的 XAML 代码中使用该文件夹中的其他图像,它们似乎可以正常移植。但话又说回来,我对 WPF 的了解是有限的,所以如果有人有任何想法,那会有所帮助。

编辑:我已将我的图像文件夹添加到项目中。我还将光标文件的构建操作设置hand2.curEmbedded Resource. 但是,当我使用以下两行时,我得到一个XAMLParseException.

    System.Windows.Resources.StreamResourceInfo info = Application.GetResourceStream(new Uri("pack://application:,,,/Slideshow;component/Images/hand2.cur"));
        window.Cursor = new System.Windows.Input.Cursor(info.Stream); 

Inner Exception我查看错误详细信息时的字段为:{"Cannot locate resource 'images/hand2.cur'."}

4

2 回答 2

3

您可以使光标成为您的应用程序/程序集中的资源,然后将GetResourceStreampack Uri一起使用到资源位置。将 StreamResourceInfo 的 Stream 传递给 Cursor 的 ctor。例如

var info = Application.GetResourceStream(new Uri("pack://application:,,,/Images/hand2.cur"));
var cursor = new Cursor(info.Stream);
于 2012-10-18T01:27:29.740 回答
0

hand2.cur将光标文件添加到Resource1.resx资源文件后,我已经完成了这项工作。然后我在我的代码中使用了以下语句:

window.Cursor = new Cursor(new System.IO.MemoryStream(MyNameSpace.Resource1.hand2));
于 2012-10-18T06:19:36.833 回答