如何:在项目中使用图像(如果它们来自嵌入式程序集)

时间:2014-05-28 09:26:06

标签: c# .net wpf uri .net-assembly

如何:在项目中使用图像(如果它们来自嵌入式程序集)

我创建了一个具有使用图像的公共方法的程序集。这些图像是嵌入的。现在,当我尝试在我的新项目中使用程序集时,除了图像之外,每个方法都可以正常工作。

我试图在不使用程序集(只是一个普通的WPF应用程序)的情况下运行应用程序并且它有效。看来,装配体没有找到嵌入的图像。

你能帮帮我吗?

编辑:我创建程序集中使用的图像的方式。

public void CreateBitmapImage(string uri)
    {
        BitmapImage bitmapImage = new BitmapImage();
        bitmapImage.BeginInit();
        bitmapImage.UriSource = new Uri(uri, UriKind.Absolute);
        bitmapImage.EndInit();
        image_msgIcon.Source = bitmapImage;
    }

    public void SetMsgImage(string msgImage)
    {
        if (msgImage == Error)
        {
            CreateBitmapImage("pack://application:,,,/CL.New;component/Images/CustomMessageBox/cross-circle.png");
        }
        else if (msgImage == Exclamation)
        {
            CreateBitmapImage("pack://application:,,,/CL.New;component/Images/CustomMessageBox/exclamation.png");
        }
        else if (msgImage == Information)
        {
            CreateBitmapImage("pack://application:,,,/CL.New;component/Images/CustomMessageBox/information.png");
        }
        else if (msgImage == Question)
        {
            CreateBitmapImage("pack://application:,,,/CL.New;component/Images/CustomMessageBox/question.png");
        }
        else
        {
        }
    }

现在我收到此错误消息:

Die Ressource "images/custommessagebox/cross-circle.png" kann nicht gefunden werden.
The resource "images/custommessagebox/cross-circle.png" cannot be found.

我试过这种方式:

CreateBitmapImage("/CL.New;component/Images/CustomMessageBox/cross-circle.png");

...

bitmapImage.UriSource = new Uri(uri, UriKind.Relative);

...这似乎有效,但图像不显示(没有错误信息)。

1 个答案:

答案 0 :(得分:1)

您应该阅读Pack URIs in WPF文档。

当您从其他程序集引用资源时,基本上您应该使用不同的Uri。正如文档中所述,请尝试使用以下内容:

pack://application:,,,/ReferencedAssembly;component/Image.png 

pack://application:,,,/ReferencedAssembly;component/Subfolder/Image.png