easy X(C语言图形化界面)学习

easy X(C语言图形化界面)学习

  • 易错:
  • 头文件
    • 创建窗口
  • 图形填充
  • 文字创建
  • 输出图片
  • 鼠标消息函数(老版)
  • 鼠标操作(新版)
  • 键盘消息函数
    • getch()
  • 音乐播放
  • 修改窗口标题,弹出框框

易错:

1.文件为(.cpp)后缀

头文件

#include  // 包含图形库的头文件

创建窗口

easy X(C语言图形化界面)学习_第1张图片

# define _CRT_SECURE_NO_WARNINGS
#include 
#include  // 包含图形库的头文件

int main()
{
	// 创建一个窗口  大 小
	initgraph(640, 480);
	
	getchar(); // 保持窗口打开
	
	// 关闭窗口
	closegraph();

	return 0;
}

运行结果如下:
easy X(C语言图形化界面)学习_第2张图片
第三个参数

	//1 创建一个窗口
	initgraph(640, 480,SHOWCONSOLE);
	   // 这里第三个参数是显示控制台
	  //第三个参数,如果是NOCLOSE,窗口关闭键失效。NOMINIMIZE,窗口缩小键失效
	  // 二者 NOCLOSE | NOMINIMIZE ,则全部失效

图形填充

easy X(C语言图形化界面)学习_第3张图片
画几个圆

# define _CRT_SECURE_NO_WARNINGS
#include 
#include  // 包含图形库的头文件

int main()
{
	//1 创建一个窗口
	initgraph(640, 480);

	//设置背景颜色
	setbkcolor(WHITE);
	cleardevice();//清屏


	// 给圆填涂颜色
	setfillstyle(PS_SOLID,5);// 设置线条格式  ps_solid 实线  5个像素
	setfillcolor(YELLOW);// 设置填充颜色
	setlinecolor(BLUE);// 设置线条颜色

	//画个圆
	circle(50, 50, 50);
	fillcircle(50, 150, 50);
	solidcircle(50, 250, 50);

	getchar();
	//2 关闭窗口
	closegraph();

	return 0;
}

easy X(C语言图形化界面)学习_第4张图片

文字创建

easy X(C语言图形化界面)学习_第5张图片
举例:

	//绘制文字
	//设置颜色
	settextcolor(RED);
	//设置文字样式,大小,字体
	settextstyle(50, 0, "楷体");
	//设置背景模式  tran sparent 透明
	setbkmode(TRANSPARENT);
	//设置颜色 RGB
	settextcolor(RGB(0, 255, 13));//画板里的三原色数据
	outtextxy(50, 50, "打印字体咯~");

运行结果:
easy X(C语言图形化界面)学习_第6张图片
RGB画板的三原色数据
easy X(C语言图形化界面)学习_第7张图片

修改outtextxy函数,让其输出多个字符(字符串)
easy X(C语言图形化界面)学习_第8张图片
文字居中

	//把文字居中
	setfillcolor(YELLOW);// 设置填充颜色
	setlinecolor(BLUE);// 设置线条颜色
	setbkmode(TRANSPARENT);
	fillrectangle(200, 50, 500, 100);//500-200=300   100-50=50
	settextcolor(RED);
	char arr[] = "居中好吧!!!";
	int width = 300 / 2 - textwidth(arr) / 2;
	int height = 50 / 2 - textheight(arr) / 2;

	outtextxy(width + 200, height + 50, arr);

运行结果:
easy X(C语言图形化界面)学习_第9张图片


输出图片

easy X(C语言图形化界面)学习_第10张图片
举例:
输出图片相对路径时,把文件放在vs对应的项目文件中

	// 输出图片
	IMAGE img;// 定义一个(变量)对象
	// 加载图片
	// 相对路径:./表示当前文件下,../表示当前文件的上一级目录
	// 绝对路径:C:\Users\30438\Pictures\CSDN插图\MySQL.jpg
	loadimage(&img, "C:\\Users\\30438\\Pictures\\CSDN插图\\MySQL.jpg",250,250);
	//               若文件路径有空格   处理方法举例:\"12 easyX学习\"   
	//                          250,250为照片设置高度,宽度
	//相对路径
	//loadimage(&img, "./MySQL.jpg");
	putimage(0, 0, &img);//前面坐标用变量也可以

运行结果为:

easy X(C语言图形化界面)学习_第11张图片

鼠标消息函数(老版)

举例:

	//鼠标信息
	while (1)  // 不断地处理事务,需要循环
	{
		if (MouseHit())
		{
			MOUSEMSG msg = GetMouseMsg();
			printf("坐标(%d,%d)\n", msg.x, msg.y);//控制台打印鼠标的坐标
			// 消息分发
			switch (msg.uMsg)
			{
			case WM_LBUTTONDOWN:
				outtextxy(400, 400, "鼠标左键按下");
				break;
			case WM_RBUTTONDOWN:
				outtextxy(400, 400, "鼠标右键按下");
				break;
			}
		}
	}

运行结果:
easy X(C语言图形化界面)学习_第12张图片
判断鼠标是否在以上矩形中,若在就输出其语句

// 文字居中
	setfillcolor(YELLOW);// 设置填充颜色
	setlinecolor(BLUE);// 设置线条颜色
	setbkmode(TRANSPARENT);
	fillrectangle(200, 50, 500, 100);//500-200=300   100-50=50
	settextcolor(RED);
	char arr[] = "居中好吧!!!";
	int width = 300 / 2 - textwidth(arr) / 2;
	int height = 50 / 2 - textheight(arr) / 2;

	outtextxy(width + 200, height + 50, arr);

	//鼠标信息
	while (1)  // 不断地处理事务,需要循环
	{
		if (MouseHit())
		{
			MOUSEMSG msg = GetMouseMsg();
			//判断鼠标是否在上面的矩形中,若在就输出一句话,不过这个是重复一直输出
		    //若放在wm_lbuttondown这种,就点击再输出
			
			if (msg.x > 200 && msg.x < 500 && msg.y>50 && msg.y < 100)
			{
				printf("鼠标就在这个矩形里了哦\n");
			}


			// 消息分发
			switch (msg.uMsg)
			{
			case WM_LBUTTONDOWN:
				outtextxy(400, 400, "鼠标左键按下");
				printf("坐标(%d,%d)\n", msg.x, msg.y);//控制台打印鼠标的坐标
				break;
			case WM_RBUTTONDOWN:
				outtextxy(400, 400, "鼠标右键按下");
				printf("坐标(%d,%d)\n", msg.x, msg.y);//控制台打印鼠标的坐标
				break;
			}
		}
	}

运行结果:
easy X(C语言图形化界面)学习_第13张图片

鼠标操作(新版)

只是换了一个结构体,可以获取更多的信息(鼠标,按键等等等)

ExMessage msg;
	while (1)  // 不断地处理事务,需要循环
	{
		if (peekmessage(&msg,EM_MOUSE))
		{
			// 消息分发
			switch (msg.message)
			{
			case WM_LBUTTONDOWN:
				outtextxy(400, 400, "鼠标左键按下");
				if (msg.x > 200 && msg.x < 500 && msg.y>50 && msg.y < 100)
				{
					printf("鼠标就在这个矩形里了哦\n");
				}
				break;
			case WM_RBUTTONDOWN:
				outtextxy(400, 400, "鼠标右键按下");
				printf("坐标(%d,%d)\n", msg.x, msg.y);//控制台打印鼠标的坐标
				break;
			}
		}
	}

运行结果:
easy X(C语言图形化界面)学习_第14张图片

键盘消息函数

非easyX函数
easy X(C语言图形化界面)学习_第15张图片

getch()

用到头文件 conio.h
堵塞函数,不输入一直在这里等

#include  // 使用_getch()   获取键位

	while (1)  // 不断地处理事务,需要循环
	{
		char key = _getch();
		printf("%d,%c\n", key, key);
		switch (key)
		{
		case 72://上键
		case 'w':              // 这里是定义了上键为w ,当然也可以定义其他的键位
		case 'W':
			printf("上键\n");
			break;
		case 80://下键
		case 's':
		case 'S':
			printf("下键\n");
			break;
		case 75://左键
		case 'a':
		case 'A':
			printf("左键\n");
			break;
		case 77://右键
		case 'd':
		case 'D':
			printf("右键\n");
			break;
		}
	}

效果演示:
easy X(C语言图形化界面)学习_第16张图片
目前只是在控制台上操作

设置一个小球,对其进行键位控制

int x=0, y=0;
	//鼠标信息
	ExMessage msg;
	while (1)  // 不断地处理事务,需要循环
	{
		// 创建一个小物体,进行移动
		cleardevice();//清屏,除去移动后留下的拖影
		setfillcolor(BLUE);
		fillcircle(x, y, 20);

		char key = _getch();
		printf("%d,%c\n", key, key);
		switch (key)
		{
		case 72://上键
		case 'w':              // 这里是定义了上键为w ,当然也可以定义其他的键位
		case 'W':
			y -= 5;
			printf("上键\n");
			break;
		case 80://下键
		case 's':
		case 'S':
			y += 5;
			printf("下键\n");
			break;
		case 75://左键
		case 'a':
		case 'A':
			x -= 5;
			printf("左键\n");
			break;
		case 77://右键
		case 'd':
		case 'D':
			x += 5;
			printf("右键\n");
			break;
		}
	}

效果演示:
easy X(C语言图形化界面)学习_第17张图片

在显示其他组件(图片什么的)的同时,完成小球移动,就是把其语句放在同一个while循环中,当然这样也会导致界面缓存闪屏
easy X(C语言图形化界面)学习_第18张图片
解决方法,可以创建一个缓冲区(双缓冲绘图)

开始:

	int x = 0, y = 0;// 设置小球的初识位置
	while (1)  // 不断地处理事务,需要循环
	{
		// 双缓冲绘图 ,需要放在绘图代码之前和之后
		BeginBatchDraw();

	    //设置背景颜色(a,b)

结束:

		// 创建一个小物体,进行移动
		setfillcolor(BLUE);
		fillcircle(x, y, 20);
		EndBatchDraw();

		char key = _getch();

完整代码如下:

# define _CRT_SECURE_NO_WARNINGS
#include 
#include  // 包含图形库的头文件
#include  // 使用_getch()   键位

int main()
{

	//1 创建一个窗口
	initgraph(640, 480,SHOWCONSOLE);
	                    // 这里第三个参数是显示控制台
	                    //第三个参数,如果是NOCLOSE,窗口关闭键失效。NOMINIMIZE,窗口缩小键失效,二者 | ,则全部失效
	                  
	int x = 0, y = 0;// 设置小球的初识位置
	while (1)  // 不断地处理事务,需要循环
	{
		// 双缓冲绘图 ,需要放在绘图代码之前和之后
		BeginBatchDraw();

	    //设置背景颜色(a,b)
	    setbkcolor(WHITE);//a
	    cleardevice();//b   清屏

		// 输出图片
		IMAGE img;// 定义一个(变量)对象
		// 加载图片
		// 相对路径:./表示当前文件下,../表示当前文件的上一级目录
		// 绝对路径:C:\Users\30438\Pictures\CSDN插图\MySQL.jpg
		loadimage(&img, "C:\\Users\\30438\\Pictures\\CSDN插图\\MySQL.jpg", 250, 250);
		//               若文件路径有空格   处理方法举例:\"12 easyX学习\"   
		//                          250,250为照片设置高度,宽度
		//相对路径
		//loadimage(&img, "./MySQL.jpg");
		putimage(0, 0, &img);//前面坐标用变量也可以

		//鼠标信息
		ExMessage msg;

		// 创建一个小物体,进行移动
		setfillcolor(BLUE);
		fillcircle(x, y, 20);
		EndBatchDraw();// 结束缓冲区

		char key = _getch();
		printf("%d,%c\n", key, key);
		switch (key)
		{
		case 72://上键
		case 'w':              // 这里是定义了上键为w ,当然也可以定义其他的键位
		case 'W':
			y -= 5;
			printf("上键\n");
			break;
		case 80://下键
		case 's':
		case 'S':
			y += 5;
			printf("下键\n");
			break;
		case 75://左键
		case 'a':
		case 'A':
			x -= 5;
			printf("左键\n");
			break;
		case 77://右键
		case 'd':
		case 'D':
			x += 5;
			printf("右键\n");
			break;
		}
	}

	getchar();
	//2 关闭窗口
	closegraph();

	return 0;
}

音乐播放

easy X(C语言图形化界面)学习_第19张图片
这个只支持mp3,网易云的不行

# define _CRT_SECURE_NO_WARNINGS
#include 
#include  // 包含图形库的头文件
#include  // 使用_getch()   键位
#include    // 包含多媒体设备接口头文件
                        //必须在graphics头文件下方
#pragma comment(lib,"winmm.lib")//加载静态库
                         // 这是预编译指令

void BGM() // 播放音乐
{
	// 打开音乐,播放音乐      alias  取别名             后面参数调音量等
	mciSendString("open 天后.mp3 alias BGM",0,0,0);
	//              repeat 重复播放   pause 暂停  close 关闭
	mciSendString("play BGM repeat", 0, 0, 0);


}

repeat 重复播放 pause 暂停 close 关闭 resume 继续

修改窗口标题,弹出框框

easy X(C语言图形化界面)学习_第20张图片

void change()
{
	// 获取窗口句柄
	HWND hnd = GetHWnd();
	// 设置窗口标题
	SetWindowText(hnd, "c语言plus");
	//弹出窗口,提示用户操作
	int isok=MessageBox(NULL, "干嘛?","提示标题",MB_OKCANCEL);
	// 这里是NULL,窗口和主窗口都可以拖动,
	  // 若写变量hnd,则是强制小窗口的确认,主窗口一直弹出,且无法点击
	// 其返回值是Int型,可进行赋值判断
	if (isok == IDOK)
	{
		printf("您点击了确认\n");  // 在控制台输出
	}
	else if (IDCANCEL == isok)
	{
		printf("您点击了取消\n");
	}
}

把其操作写入change()函数内
easy X(C语言图形化界面)学习_第21张图片

你可能感兴趣的:(easyX(c/c++),c语言,学习,开发语言)