【问题标题】:How to use image from resources? [duplicate]如何使用资源中的图像? [复制]
【发布时间】:2019-11-11 09:11:48
【问题描述】:

我想使用程序资源中的图像路径,而不是使用 Windows 中的完整路径。

tlo.Fill = new ImageBrush
{
  ImageSource = new BitmapImage(new Uri(@"D:\Willie\Documents\ColorTester\ColorTester\Resources\1.jpg", UriKind.Absolute))
};

我想使用这样的路径:

ImageSource = new BitmapImage(new Uri("ColorTester.Resources.1.jpg"));

谁能帮我解决这个问题,因为当我尝试使用它时,Visual Studio 会抛出异常“System.UriFormatException”?

【问题讨论】:

    标签: c# wpf rectangles


    【解决方案1】:

    我不知道你的图片的正确路径,如果你的项目下有一个名为 Resources 的文件夹并且图片在里面,你可以像下面这样解决它们:

    ImageSource = new BitmapImage(new Uri("/Resources/1.jpg", UriKind.Relative));
    

    如果图像在 UserControl 中,并且您想在另一个项目中使用它,那么可以这样处理:

    ImageSource = new BitmapImage(new Uri("pack://application:,,,/{YourAssemblyWhereResourceIsLocated};component/Resources/1.jpg"));
    

    有用的链接:

    【讨论】:

    • 当我尝试第一个选项时,此异常会弹出“无效的 URI:无法确定 URI 的格式。”编辑:这对我有用: ImageSource = new BitmapImage(new Uri(@"pack://application:,,,/Resources/1.jpg"));
    • 您总是必须使用完整的 Pack URI,包括后面代码中的 pack://application:,,, 前缀。与 XAML 不同,XAML 解析器会自动添加它。
    • @Clemens 但在docs.microsoft.com/en-us/dotnet/framework/wpf/app-development/… 的“在代码中使用 Pack URI”部分中,它使用相对 URI,没有 pack://application:,,, 前缀
    • "you have to" 可能并不完全正确,但相对语法完全令人困惑,因为您实际上看不到 URI 应该引用的内容。它也可能是一个相对文件路径。你应该简单地避免这种语法。即使它以某种方式碰巧起作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-07
    • 1970-01-01
    相关资源
    最近更新 更多