2012-07-31 79 views
3

我试图在C#中创建一个纸牌游戏,为此我有很多需要加载的图像。它们都是jpg图像,其中大约有7000个。在C#应用程序中处理大量图像

我想确保,如果您下载游戏,图像将不容易访问,这意味着它们不应该只是在应用程序的子文件夹中的JPG图像。所以我想将它们嵌入到DLL文件中。

但我该怎么做?我如何有效地处理这个问题?这种事情是否有一种技术,或者是另一种更好的方法?

回答

1

如果你有7000图像,你需要一个数据库。 Microsoft SQL Server Compact 4.0是一个选项。它小巧易用。

+0

数据库可以帮助或矫枉过正,依赖于大量的在原来的问题没有提及的事情。 – 2012-07-31 06:48:48

2

我想确保[...]图像不会轻易访问

首先,你应该问自己,为什么要禁止这个。如果你只是想避免别人操纵图片,你可以将它们留在一堆子文件夹中作为JPG,只需为每个文件生成校验和,并在程序加载图片时检查它们。

如果您想避免重复使用图片,可以将它们留在一堆子文件夹中,但不能作为JPG文件。使用标准的AES算法对它们进行编码。但要小心,这不会阻止任何其他人在应用程序运行时制作屏幕截图,因此您应该考虑这是否值得您付出努力。

编辑:如果你想嵌入图像,因为当你只有一个大文件部署而不是7000个单个文件时,安装变得更容易,那么你可以编写一个帮助程序来编程创建资源文件。请参阅page from Microsoft,特别是关于.resource文件的部分,以了解如何利用ResourceWriter类来实现此目的。

1

我假定这是一个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]]

+0

...现在重复这7000次,你准备好了吗?问题是如何以编程方式实现这一点,而不是手动,这是微不足道的。 – 2012-07-31 16:40:47

+1

以编程方式在汇编中嵌入资源:http://stackoverflow.com/questions/1107912/programmically-embed-resources-in-a-net-assembly – shajivk 2012-07-31 17:48:32