我试图在C#中创建一个纸牌游戏,为此我有很多需要加载的图像。它们都是jpg图像,其中大约有7000个。在C#应用程序中处理大量图像
我想确保,如果您下载游戏,图像将不容易访问,这意味着它们不应该只是在应用程序的子文件夹中的JPG图像。所以我想将它们嵌入到DLL文件中。
但我该怎么做?我如何有效地处理这个问题?这种事情是否有一种技术,或者是另一种更好的方法?
我试图在C#中创建一个纸牌游戏,为此我有很多需要加载的图像。它们都是jpg图像,其中大约有7000个。在C#应用程序中处理大量图像
我想确保,如果您下载游戏,图像将不容易访问,这意味着它们不应该只是在应用程序的子文件夹中的JPG图像。所以我想将它们嵌入到DLL文件中。
但我该怎么做?我如何有效地处理这个问题?这种事情是否有一种技术,或者是另一种更好的方法?
如果你有7000图像,你需要一个数据库。 Microsoft SQL Server Compact 4.0是一个选项。它小巧易用。
我想确保[...]图像不会轻易访问
首先,你应该问自己,为什么要禁止这个。如果你只是想避免别人操纵图片,你可以将它们留在一堆子文件夹中作为JPG,只需为每个文件生成校验和,并在程序加载图片时检查它们。
如果您想避免重复使用图片,可以将它们留在一堆子文件夹中,但不能作为JPG文件。使用标准的AES算法对它们进行编码。但要小心,这不会阻止任何其他人在应用程序运行时制作屏幕截图,因此您应该考虑这是否值得您付出努力。
编辑:如果你想嵌入图像,因为当你只有一个大文件部署而不是7000个单个文件时,安装变得更容易,那么你可以编写一个帮助程序来编程创建资源文件。请参阅page from Microsoft,特别是关于.resource
文件的部分,以了解如何利用ResourceWriter
类来实现此目的。
我假定这是一个Windows应用程序
为了嵌入一个图像到装配
1. Right click the Image file and Select properties
2. In the Properties Pane Set the BuildAction as Embeded resource
所以这个形象成为当应用程序被编译一个嵌入式的资源
然后,您可以从程序集中访问图像,例如:
global::[[MyNameSpace]].Properties.Resources.[[ImageName]]
为如:this.pictureBox1.Image = global::[[MyNameSpace]].Properties.Resources.[[ImageName]]
...现在重复这7000次,你准备好了吗?问题是如何以编程方式实现这一点,而不是手动,这是微不足道的。 – 2012-07-31 16:40:47
以编程方式在汇编中嵌入资源:http://stackoverflow.com/questions/1107912/programmically-embed-resources-in-a-net-assembly – shajivk 2012-07-31 17:48:32
数据库可以帮助或矫枉过正,依赖于大量的在原来的问题没有提及的事情。 – 2012-07-31 06:48:48