如何:在项目中使用图像(如果它们来自嵌入式程序集)
我创建了一个具有使用图像的公共方法的程序集。这些图像是嵌入的。现在,当我尝试在我的新项目中使用程序集时,除了图像之外,每个方法都可以正常工作。
我试图在不使用程序集(只是一个普通的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);
...这似乎有效,但图像不显示(没有错误信息)。
答案 0 :(得分:1)
您应该阅读Pack URIs in WPF文档。
当您从其他程序集引用资源时,基本上您应该使用不同的Uri
。正如文档中所述,请尝试使用以下内容:
pack://application:,,,/ReferencedAssembly;component/Image.png
或
pack://application:,,,/ReferencedAssembly;component/Subfolder/Image.png