EasyX的SetWorkingImage ()

追求适度,才能走向成功;人在顶峰,迈步就是下坡;身在低谷,抬足既是登高;弦,绷得太紧会断;人,思虑过度会疯;水至清无鱼,人至真无友,山至高无树;适度,不是中庸,而是一种明智的生活态度。

导读:本篇文章讲解 EasyX的SetWorkingImage (),希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

🎆音乐分享 

小情歌 – 苏打绿
 


EasyX的SetWorkingImage ()
 

SetWorkingImage :设置工作区

SetWorkingImage(&bigimg);

SetWorkingImage(NULL);//回到默认工作区

如果需要对某个 IMAGE 做绘图操作,可以通过该函数将其设置为当前的绘图设备,之后所有的绘图语句都会绘制在该 IMAGE 上面。

简而言之,就是设置某一个特定的区域来进行绘图

比如下面的代码就把图片作为一个工作区

将参数置为 NULL 可恢复对默认绘图窗口的绘图操作。 

比如下面的,添加工作区,可以把一张图片分割为多张图片 

EasyX的SetWorkingImage ()

运行效果,可以发现图片变成分开的了

EasyX的SetWorkingImage ()代码 

/*
可以看看这个视频
【【C语言/C++】项目实战:烟花表白】
https://www.bilibili.com/video/BV1ZA411L7zx?p=2&vd_source=21581d752de8daca00ef38561a7264f6
*/

#include<graphics.h>
#include<easyx.h>
#include<stdio.h>
#include<time.h>

#define NUM 13
struct Jet
{
	int x, y;//烟花弹的坐标  当前的坐标
	int hx, hy;//烟花弹最高的坐标
	bool shoot;//烟花弹的状态(是否发射)
	unsigned long t1, t2, dt;//速度(单位时间dt=t2-t1)
	IMAGE img[2];//两张图片 img[0]-暗色图片 ing[1]-亮色图片 一闪一闪的效果
	byte n : 1;//位段(可以用到CPU里面,n是一个变量 1个位 1/8个字节 n++对于0 1 0 1……
}jet[NUM];	   //img[n++]一闪一闪的效果

void load()
{
	srand(time(NULL));
	IMAGE bigimg;//先加载一整张图片
	loadimage(&bigimg, _T("1.jpg"), 200, 50);

	//工作区(就是能看到的窗口)
	SetWorkingImage(&bigimg);
	//分解一张图片为多张图片
	for (int i = 0; i < NUM; i++)
	{
		int n = rand() % 5;//随机得到一个下标
		getimage(&jet[i].img[0],n*20,0,20,50);//
		getimage(&jet[i].img[1],(n+5)*20,0,20,50);
		
		
	}

	SetWorkingImage(NULL);//回到默认工作区
	
}
void init(int i)//初始化
{
	jet[i].x=0;
	jet[i].y=0;
	jet[i].hx=0;
	jet[i].hy=0;
	jet[i].t1=GetTickCount();//获取系统的时间
	jet[i].t2=0;
	jet[i].dt=rand()%10+1;//1ms到10ms之间
	jet[i].n=0;
	jet[i].shoot=false;

	IMAGE bigimg;//先加载一整张图片
	loadimage(&bigimg, _T("1.jpg"), 200, 50);

	//jet[i].img[0];
	//jet[i].img[1];
}
//烟花弹出现的时间间隔
void choise(DWORD& tt1)
{
	DWORD tt2 = GetTickCount();
	if (tt2 - tt1 > 100)
	{
		int i = rand() % NUM;//0-12

		if (jet[i].shoot == false)
		{
			//数据重新规划一下
			jet[i].x = rand()%(1200-20);
			jet[i].y = rand()%(100+600);//600-699
			jet[i].hx = jet[i].x;
			jet[i].hy = rand()%400;//0-399
			jet[i].shoot = true;

			putimage(jet[i].x, jet[i].y, &jet[i].img[jet[i].n]);//只要n++,就会一闪一闪的
		}
		tt1 = tt2;
	}
}

void Shoot()
{
	for (int i = 0; i < NUM; i++)
	{
		jet[i].t2 = GetTickCount();
		if (jet[i].t2 - jet[i].t1 > jet[i].dt && jet[i].shoot == true)
		{
			putimage(jet[i].x, jet[i].y, &jet[i].img[jet[i].n]);//只要n++,就会一闪一闪的

			if(jet[i].y>jet[i].hy)
			{
				jet[i].n++;
				jet[i].y -= 5;//上升的效果
			}

			putimage(jet[i].x, jet[i].y, &jet[i].img[jet[i].n]);

			if (jet[i].y <= jet[i].hy)//到达了最高的高度
			{
				putimage(jet[i].x, jet[i].y, &jet[i].img[jet[i].n]);
				//它的使命完成
				jet[i].shoot = false;//便于重复使用
			}
			jet[i].t1 = jet[i].t2;
		}
	}
}
int main()
{
	initgraph(1200, 800);
	DWORD tt1 = GetTickCount();

	load();
	putimage(100, 100, &jet[5].img[0]);
	putimage(150, 100, &jet[5].img[1]);

	for (int i = 0; i < NUM; i++)
	{
		init(i);
	}
	while (1)
	{
		choise(tt1);
		Shoot();
	}
	getchar();
}

Code over!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/131373.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!