我们都知道图形的加载与贴出的函数是通过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录屏20221217183926

这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 15
int 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图形库----贴图相关推荐

  1. 如何用C的easyX图形库制作图形化界面菜单(财务管理系统)

    这是财务管理系统的一个图形化界面主菜单 : 下面这个是查询功能的一个子菜单: 一: 菜单的实现靠的是easyX,它是针对C++的一个图形库,编译器用的是Visual C.其实VC和easyX图形库就很 ...

  2. easyx图形库-----贴图技巧之双缓冲消除闪屏(BeginBatchDraw 与 EndBatchDraw)

    目录 前言: 案例1:作图时闪屏 案例2:贴图时闪屏 双缓冲解决闪屏问题 原理: 前言: 学了easyx图形库的朋友们都知道,我们可以在easyx图形库上面画出连续运动的图片,或者通过贴图的方式把每一 ...

  3. easyx图形库-----贴图技巧之连续贴图

            先看作品: QQ录屏20221220195006 看吧,是不是很炫!这一期我来教大家怎么去做这种视频效果. 目录 前言: 获取帧图的方法 介绍两种方法实现动图 1.数组 2.单循环链表 ...

  4. c语言使用easyX图形库制作打气球小游戏

    大一c语言使用easyX图形库制作打气球小游戏 如果你是入门easyX图形库,那么这个打气球小游戏将会是和不错的入门项目选择,easyX开创了可视化窗口,使用户更加直观的了解到对象的变化,总代码以及素 ...

  5. 利用easyX图形库画迷宫问题的路径

    文章目录 前言 1.迷宫问题 1.1 问题描述: 1.2 实验目的: 2.函数原型及功能 3.关键内容 3.1 如何记录bfs算法访问各个路径中点的横纵坐标 3.2 如何用VC6.0输出最短路径图 3 ...

  6. C++可视化界面EasyX图形库的安装以及简单使用

    EasyX图形库是一个比较简单容易上手的可视化界面工具包,一般配合VC6.0就可以使用,也可以配合VS系列,这里简单介绍下VC6.0的安装和简单使用. 一.EasyX的安装 然后点击进去下载 如上所示 ...

  7. VS2019设置easyx图形库

    easyx图形库里面的graphics.h头文件非常好用但是VS不能使用怎么办我了教给你设置,让在VS2019上也能愉快的使用easyx图形库. 1.下载easyx图形库 我这里提供的是EasyX_2 ...

  8. C语言之五子棋项目 基于EasyX图形库

    C语言之五子棋 前言 一.EasyX图形库下载与安装 1.EasyX图形库下载 2.VS2019设置EasyX图形库 二.五子棋中用到的图形库知识 1.初始化页面 2.文字显示 3.鼠标操作 4.棋盘 ...

  9. 用easyx画电子钟_基于EasyX图形库的多线程绘图应用

    本文<基于EasyX图形库的多线程绘图应用>由手机部落整理,仅供参考.如果觉得很不错,欢迎点评和分享-感谢你的阅读与支持! 张煜昕 摘要:EasyX 是C++语言进行图形化编程和游戏编程的 ...

最新文章

  1. 《中国大数据产业白皮书及百强榜单》:一览中国大数据产业发展全局
  2. mysql损坏表修复
  3. ABAP实现粘贴板的操作,复制粘贴
  4. asp.net treeView 节点 点击 变色
  5. python读xml文件生成头文件_Python根据指定文件生成XML的方法
  6. JavaScript 图片滑动切换效果
  7. 计算机学院吉祥物意见征集,“我的学校我做主 ——吉祥物征集”启事
  8. wchar_t转为char*
  9. 20191206每日一句
  10. Android 扫码枪 读取(外接键盘读取)
  11. 测试和开发怎么互转?
  12. php过滤文本中的手机号,座机号,qq,邮箱地址
  13. 对于Java毕业设计选题的一些看法
  14. 教你一招永久去除WPS广告
  15. 吴恩达机器学习课后作业ex1(python实现)
  16. 方舟服务器维护公告11月19日,《方舟指令》11月29日维护公告
  17. 男女拍照姿势大全!火速收藏ing
  18. 光纤的特性参数有哪些?
  19. 联想(IBM)thinkpad-SL400笔记本安装xp系统完全过程
  20. halcon10求周长

热门文章

  1. 微软自拍应用一键美颜背后的人工智能技术(附论文下载)
  2. 关于python桑葚图的一些实现
  3. 企业运维 kubernetes(k8s) 之 service
  4. 【常见c语言笔试题嵌入式软件开发2】
  5. 圈圈教你玩转USB第三版 光盘资料
  6. 多媒体录播系统服务器搭建,多媒体录播服务器
  7. 半自主实验室机器人推动探索物质世界
  8. 高级教师考证——信息技术 教资复习资料科目一
  9. 基于大数据的人工智能应用-周靖人
  10. GGEBiplotGUI软件包如何安装?