1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > easyx图形库----贴图

easyx图形库----贴图

时间:2019-07-12 13:50:02

相关推荐

easyx图形库----贴图

我们都知道图形的加载与贴出的函数是通过loadimage与putimage来实现的,如下所示:

initgraph(400, 700);int a = getheight();//获取屏幕的高度int b = getwidth();//获取屏幕的宽度IMAGE map;loadimage(&map, "kuc.jpg",,b,a);putimage(0, 0, &map);

很显然,如果我想贴一张图片直接利用这两个函数贴上去就是了,那么如果我想贴多个图片从而形成一个动图,那么怎么去实现呢?

先多次用loadimage与putimage这两个函数试试看效果

这是我的已有当前目录下的图片从 k1到 k15

#include<stdio.h>#include<Windows.h>#include<graphics.h>#pragma comment(lib,"Winmm.lib")IMAGE k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15;void map(int a, int b){loadimage(&k1, "k1.png", a, b);loadimage(&k2, "k2.png", a, b);loadimage(&k3, "k3.png", a, b);loadimage(&k4, "k4.png", a, b);loadimage(&k5, "k5.png", a, b);loadimage(&k6, "k6.png", a, b);loadimage(&k7, "k7.png", a, b);loadimage(&k8, "k8.png", a, b);loadimage(&k9, "k9.png", a, b);loadimage(&k10, "k10.png", a, b);loadimage(&k11, "k11.png", a, b);loadimage(&k12, "k12.png", a, b);loadimage(&k13, "k13.png", a, b);loadimage(&k14, "k14.png", a, b);loadimage(&k15, "k15.png", a, b);}int main(){PlaySound("home.wav", NULL, SND_FILENAME | SND_ASYNC|SND_LOOP);initgraph(500, 700);map(500, 700);int i = 150;int x = 0, y = 0;while (1){putimage(x, y, &k1);Sleep(i);cleardevice();putimage(x, y, &k2);Sleep(i);cleardevice();putimage(x, y, &k3);Sleep(i);cleardevice();putimage(x, y, &k4);Sleep(i);cleardevice();putimage(x, y, &k5);Sleep(i);cleardevice();putimage(x, y, &k6);Sleep(i);cleardevice();putimage(x, y, &k7);Sleep(i);cleardevice();putimage(x, y, &k8);Sleep(i);cleardevice();putimage(x, y, &k9);Sleep(i);cleardevice();putimage(x, y, &k10);Sleep(i);cleardevice();putimage(x, y, &k11);Sleep(i);cleardevice();putimage(x, y, &k12);Sleep(i);cleardevice();putimage(x, y, &k13);Sleep(i);cleardevice();putimage(x, y, &k14);Sleep(i);cleardevice();putimage(x, y, &k15);Sleep(i);cleardevice();}system("pause");}

运行结果如下 :

QQ录屏1217183926

这15个图片一帧一帧贴上去,由此可见用这种方法非常麻烦,代码非常长。对此有什么方法可以简化代码呢,同时达到相同的效果?有,当然有啦!不难发现,这些图片的名字都是有规律的,k1~k15,那么我们可以通过数组去实现贴多个图片。

这里介绍一个新函数,这个函数可以实现把图片路径的字符串复制到一个字符串上

sprintf 函数

原型:int sprintf( char *buffer, const char *format [, argument] ... );

功能:通过这个函数,我们可以实现把一个字符串复制到另外一个字符串中,而且里面的相关内容还可以去改变。

char s[100];int i=1;sprintf(s,"good%d",i);//输出结果是 good1

学会了这个函数,我们可以通过这个函数来实现多个图片的贴入

代码如下:

#include<graphics.h>#include<stdio.h>#include<Windows.h>#include<mmsystem.h> #pragma comment(lib,"winmm.lib")#define n 15int main(){IMAGE kk[n];initgraph(400, 700);int x = getheight();int y = getwidth();cleardevice(); mciSendString("open home.wav alias musi", 0, 0, 0);//播放音乐mciSendString("play musi", 0, 0, 0);//播放音乐char arr[100];//定义字符串for (int i = 0; i < n; i++){sprintf(arr, "k%d.png", i + 1);//把路径复制到字符串loadimage(&kk[i], arr, y, x);//加载图片}while (true) { for (int j = 0; j < n; ++j) {putimage(0, 0, &kk[j]);Sleep(165);}}}

可以看出,相较于上面那个,代码内容少了很多

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。
相关阅读
EasyX图形库简述

EasyX图形库简述

2019-10-17

easyX——图形库

easyX——图形库

2023-08-18

easyX图形库

easyX图形库

2023-06-16

EasyX图形库--显示图片

EasyX图形库--显示图片

2023-08-12