加载图像存储在另一个dll

本文关键字:另一个 dll 存储 图像 加载 | 更新日期: 2023-09-27 18:17:52

我有一个名为GameTools的通用工具的dll。在那里我也有一些图像的文件夹,它们被设置为嵌入式资源(我希望它们透明地携带dll)。这些图像代表骰子的两面。它们应该被加载到一个公共列表中。像这样:

public List<ImageSource> faceImages = new List<ImageSource>();
public void init()
{
    //there is a known set of images, so I can load them one by one
    faceImages.add(new BitmapImage(new Uri("/GameTools;component/Images/face1.png", UriKind.Relative)););
    faceImages.add(new BitmapImage(new Uri("/GameTools;component/Images/face2.png", UriKind.Relative)););
    ...
}

然后我有一个WPF组件是骰子本身(命名为Dice),它使用对GameTools的引用。

dice中,我有一个图像(img)和一个"掷骰子"的函数。它应该看起来像这样:

public void roll()
{
    int face = random.Next(0,6);
    img.Source = LOAD_THE_REFERENCE(face);
}

有没有人如何编码这个LOAD_THE_REFERENCE?或者问题出在我将图像"导入"到GameTools的方式上。不确定,网上有很多不同的解决方案,但到目前为止并没有真正帮助我。有人能帮忙吗?

加载图像存储在另一个dll

您应该将映像文件的Build Action设置为Resource,并通过完整的资源文件包uri访问它们:

var bitmap = new BitmapImage(
    new Uri("pack://application:,,,/GameTools;component/Images/face1.png"));