VB.NET - 如何使用外部.resources文件中的图片?

时间:2014-03-25 16:51:04

标签: vb.net image resources

我想知道如何使用我放在外部.resources文件中的图像。长话短说:我的程序经历了很多变化,而其中的图像每年只更新一次。我想我可以通过将这些图像存储到二进制资源文件中来减少用户下载所需的数量,因此只需要重新下载主可执行文件。我用这样的东西生成了这个文件:

Dim stream As System.IO.Stream
Dim rsxw As New System.Resources.ResXResourceWriter("MyData.resx")
stream = Me.GetType().Assembly.GetManifestResourceStream("MyProgram.File1.png")
Dim bmp = New Bitmap(stream)
stream.Close()
Dim img As System.Drawing.Image = CType(bmp, System.Drawing.Image)
rsxw.AddResource(name, img)
bmp.Dispose()
img.Dispose()
rsxw.Close()

然后我使用ResGen将生成的resx文件编译为.resources文件。我现在想在我的程序中使用这些图像。

我最初做的是这样的事情:

dim filename as string = "File1"
stream =Me.GetType().Assembly.GetManifestResourceStream("MyProgram." & filename & ".png")
picboximg = New Bitmap(stream)
stream.Close()
PreviewBox.Image = picboximg

但由于资源不再嵌入,因此该方法不再有效。如何立即从此资源文件中获取图像?

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

您可以使用ResourceReader class

执行此操作

但是没有理由放弃My.Resources的便利性和类型安全性。只需在您的解决方案中添加一个类库项目,然后调用它(比如说)MyRes。单击Solution Explorer窗口工具栏中的Show All Files按钮。展开“我的项目”,然后双击“Resources.resx”。在工具栏上,将Access Modifier属性更改为" Public"。像往常一样添加资源。添加项目引用,您现在可以在代码中简单地访问此单独 dll中的资源。例如:

    Me.BackgroundImage = MyRes.My.Resources.animation