【C/C++积累技巧】实现 连续播放文件图片+逐帧文本显示, 同时 可以按任意键退出(基于easyx小游戏编程)
技巧一、使用 IMAGE数组+循环:实现【连续播放图片】
(1)一张图片如何放映在 图形化窗口上:借用两个函数
#include // 函数的头文件 IMAGE imgMy; // 图形变量 loadimage(&imgMy, "写入你想显示的图片路径"); // 加载目标图片进入图形变量imgMy putimage(x, y, &imgMy); // (x, y) 指图片放映的左上角坐标(就是你想要图片在什么位置,自己调就好) 总结功能 loadimage函数 加载目标图片进入图形变量imgMy putimage函数 将图片展示出来
(3)如何连续播放一个文件内的很多张图片??
难点攻破:
难点1:如何存储这么多图片
使用 IMAGE 数组:
/* 举例:我想要连续播放的图片 一共 78 张 */ IMAGE imgWelcome[78];
难点2:根据loadimage函数,需要写入图片的路径,而每张图片路径不同,怎么处理?
可以将 不同路径 变成字符串, 存入字符串数组,然后再输入 loadimage函数,接着直接 使用 putimage函数 播放图片
注释比较清楚了,看注释就行
char name[64]; for (int i = 0; i通过循环,就是实现了 图片的连续播放
注意:由于循环改变的是 i ,因此你那些图片的命名格式应该一样,只可以有 编号 %d 不同,如下图
效果演示难点3:文字如何打印显示到 窗口上?
通过一套模板:你只需要修改你想要的参数就好
// 输出文字的模板 // for循环里面就是逐帧播放图片,我们也要逐帧显示文字 char Text[64] = "按任意键进入游戏"; // 你想要写的文本 // 设置输出效果为:Text setcolor(RGB(180, 180, 180)); // 设置颜色(非必要):设置 RGB参数 LOGFONT f; gettextstyle(&f); // 获取当前字体设置 f.lfHeight = 100; // 设置字体高度为 100, 宽度不用设置:会自适应 _tcscpy(f.lfFaceName, _T("黑体")); // 设置字体为“黑体”(推荐使用 _tcscpy_s 函数) f.lfQuality = ANTIALIASED_QUALITY; // 设置输出效果为抗锯齿 settextstyle(&f); // 设置字体样式 outtextxy(50, 50, Text); // (50, 50) 是你想要文字显示的位置左上角坐标(x, y) // 单位:像素效果
注意:由于你需要每一张图片都有文字,即为 逐帧播放,因此,你的文字显示 的相关函数要写在 前面讲过的 连续播放图片的 for循环中
for (int i = 0; i动图效果演示:
难点4:有没有发现,上面动图有 闪烁现象,如何消除闪烁?
使用这两个函数可以消除闪烁:将一次显示的所有图片的相关程序,写在这两个函数中间
BeginBatchDraw(); // ........相关程序 EndBatchDraw();for (int i = 0; i技巧二、使用 _kbhit() 函数:实现 【按任意键退出】
这篇文章讲得比较细了:http://t.csdnimg.cn/S3qW9
原理:
程序执行到_kbhit()时,等待输入,但是不会停止而是继续运行,有输入时kbhit()才就返回一个非零值,否则返回0。(这个不会停下等你输入,而是你任意时间输入,它才响应,不会打断你图片的播放!)
使用:_kbhit() 在有输入时返回 1,即你输入任意键 while 循环退出:实现按任意键退出
// _kbhit()函数的头文件 #include #include using std::cout; // 使用样例 int main() { // _kbhit() 在有输入时返回 1,即你输入任意键 while 循环退出:实现按任意键退出 // 否则会一直打印:"Now input now!\n" while (!_kbhit()) { cout
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。