我正在尝试用 C# 创建一个纸牌游戏,为此我需要加载很多图像。它们都是jpg图像,大约有7000张。
我想确保如果您下载游戏,图像将无法轻松访问,这意味着它们不应只是应用程序子文件夹中的 JPG 图像。所以我考虑将它们嵌入到 DLL 文件中。
但是我该怎么做呢?我如何有效地处理这个问题?这种事情有技巧,还是另一种方法更可取?
我想确保 [...] 图像不容易访问
首先,您应该问自己为什么要禁止这样做。如果您只是想避免其他人操纵图片,您可以将它们作为 JPG 保存在一堆子文件夹中,只需为每个文件生成校验和并在程序加载图片时检查它们。
如果您想避免重复使用图片,您可以将它们放在一堆子文件夹中,但不要作为 JPG 格式。例如,使用标准 AES 算法对它们进行编码。但请注意,这不会阻止其他人在您的应用程序运行时制作屏幕截图,因此您应该考虑这样做是否真的值得。
编辑:如果您想嵌入图像,因为当您只有一个大文件要部署而不是 7000 个单个文件时,安装变得更容易,那么您可以编写一个帮助程序以编程方式创建资源文件。请参阅Microsoft的此页面,尤其是有关.resource
文件的部分,以了解如何ResourceWriter
为此目的使用该类。
我假设这是一个 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]]
如果您有 7000 张图像,则需要一个数据库。Microsoft SQL Server Compact 4.0是一个选项。它体积小且易于使用。