【C/C++积累技巧】实现 连续播放文件图片+逐帧文本显示, 同时 可以按任意键退出(基于easyx小游戏编程)

07-14 1162阅读

技巧一、使用 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 不同,如下图

【C/C++积累技巧】实现 连续播放文件图片+逐帧文本显示, 同时 可以按任意键退出(基于easyx小游戏编程)


效果演示

【C/C++积累技巧】实现 连续播放文件图片+逐帧文本显示, 同时 可以按任意键退出(基于easyx小游戏编程)

难点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)
                                        // 单位:像素

效果

【C/C++积累技巧】实现 连续播放文件图片+逐帧文本显示, 同时 可以按任意键退出(基于easyx小游戏编程)

注意:由于你需要每一张图片都有文字,即为 逐帧播放,因此,你的文字显示 的相关函数要写在 前面讲过的 连续播放图片的 for循环中

for (int i = 0; i  
 
 
 

动图效果演示:

【C/C++积累技巧】实现 连续播放文件图片+逐帧文本显示, 同时 可以按任意键退出(基于easyx小游戏编程)

难点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 
VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]