我正在尝试用C#创建一个纸牌游戏,为此我有很多需要加载的图像。 它们都是jpg图像,其中大约有7000个。
我想确保如果你下载游戏,图像将不容易访问,这意味着它们不应该只是应用程序的子文件夹中的JPG图像。 所以我想到将它们嵌入到DLL文件中。
但是我该怎么做? 我该如何有效地处理这个问题? 这种事情有没有tecnique,还是另一种方法更好?
我想确保图像不易被访问
首先,你应该问自己为什么要禁止这个。 如果你只是想避免别人操纵图片,你可以将它们留在一堆子文件夹中作为JPG,只需为每个文件生成校验和,并在程序加载图片时检查它们。
如果您想避免重复使用图片,可以将它们放在一堆子文件夹中,但不能放在JPG中。 例如,使用标准AES算法对它们进行编码。 但请注意,这不会阻止其他人在应用程序运行时制作屏幕截图,因此您应该考虑这是否值得付出努力。
编辑:如果你想嵌入图像,因为当你只有一个大文件而不是7000个单个文件时安装变得更容易,那么你可以编写一个辅助程序来编程创建资源文件。 请参阅Microsoft的此页面 ,特别是有关.resource
文件的部分,以了解如何将ResourceWriter
类用于此目的。
如果您有7000个图像,则需要一个数据库。 Microsoft SQL Server Compact 4.0是一个选项。 它体积小,易于使用。
我假设这是一个Windows应用程序
为了将图像嵌入到装配体中
1. Right click the Image file and Select properties
2. In the Properties Pane Set the BuildAction as Embeded resource
因此,在编译应用程序时,此Image将成为嵌入式资源
然后你可以从程序集访问图像,如:
global::[[MyNameSpace]].Properties.Resources.[[ImageName]]
例如: this.pictureBox1.Image = global::[[MyNameSpace]].Properties.Resources.[[ImageName]]