【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
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!




