4.图片资源的加载
图片资源的加载
首先是loadPicGroup()函数
1 | void loadPicGroup() { |
其中loadimage是easyx库的函数,可以从图片文件获取图像。原型如下:
1 | void loadimage( |
在这里我简要说明一下这个函数:pDstImg为保存图像的 IMAGE对象指针。如果为 NULL,表示图片将读取至绘图窗口。pImgFile为图片文件名,这里填写文件的相对路径即可。
nWidth为图片的拉伸宽度。加载图片后,会拉伸至该宽度。默认为 0,表示使用原图的宽度。nHeight为图片的拉伸高度。加载图片后,会拉伸至该高度。默认为 0,表示使用原图的高度。bResize是否调整 IMAGE 的大小以适应图片,默认为false。
例如
1 | loadimage(&picgroup[1], "image/background2.jpg"); |
表示将路径为image/background2.jpg的图片加载到picgroup[1]中。
在加载植物僵尸动画的时候,可能会加载很多张文件名类似的图片,这样如果我们一个个的使用 loadimage 函数会使得代码过于冗杂,为简化代码,我自定义了一个函数,用户批量加载图片。
函数解析
下面是我自定义的loadImages函数,这个函数的功能是根据给定的文件夹名称、文件格式和数量,加载特定格式的图像文件到一个 IMAGE 类型的数组中。
1 | void loadImages(const char* folder, const char* format, int last, IMAGE* images) { |
这段代码的目的是从指定文件夹中加载一系列图像文件,并将它们存储在提供的 IMAGE 类型数组中。下面是对代码每行的解释,以及函数的功能、参数和返回值的意义。
1 | void loadImages(const char* folder, const char* format, int last, IMAGE* images) { |
这一行定义了一个名为 loadImages 的函数,它没有返回值(void)。这个函数接收四个参数:
const char* folder:一个指向字符数组(字符串)的指针,指定了图像文件所在的文件夹名称。const char* format:一个指向字符数组(字符串)的指针,用于指定文件名中除了编号之外的固定格式部分。int last:一个整型变量,指定了需要加载图像的最后一张编号(图片编号从0开始,这个不是图片张数)。IMAGE* images:一个指向IMAGE类型数组的指针,用于存储加载的图像数据。
1 | char path[50]; |
这行代码声明了一个名为 path 的字符数组,长度为 50 个字符。它用于存储构建的文件路径字符串。
1 | for (int i = 0; i <= last; i++) { |
这行代码开始了一个 for 循环,循环变量 i 从 0 开始,直到等于 last。
1 | sprintf(path, "image/%s/%s%d.png", folder, format, i); |
这行代码使用 sprintf 函数,根据 folder、format 和循环变量 i 的值,格式化生成一个字符串,并将其存储在 path 数组中。字符串格式为 "image/%s/%s%d.png",其中 %s 和 %d 分别是字符串和整数的占位符。
例如:
1 | loadImages("zombie/attack", "frame_", 20, attackz); |
表示在运行路径存在zombie/attack的文件夹,里面存有连续图片,图片名为frame_xx.png,这里的xx表示从0到20的连续数字,共21张图片,将这些照片加载到attack变量中