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

这篇具有很好参考价值的文章主要介绍了easy X(C语言图形化界面)学习。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

易错:

1.文件为(.cpp)后缀

头文件

#include <graphics.h> // 包含图形库的头文件

创建窗口

c语言图形化,easyX(c/c++),c语言,学习,开发语言

# define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <graphics.h> // 包含图形库的头文件

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

	return 0;
}

运行结果如下:
c语言图形化,easyX(c/c++),c语言,学习,开发语言
第三个参数

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

图形填充

c语言图形化,easyX(c/c++),c语言,学习,开发语言
画几个圆

# define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <graphics.h> // 包含图形库的头文件

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;
}

c语言图形化,easyX(c/c++),c语言,学习,开发语言

文字创建

c语言图形化,easyX(c/c++),c语言,学习,开发语言
举例:

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

运行结果:
c语言图形化,easyX(c/c++),c语言,学习,开发语言
RGB画板的三原色数据
c语言图形化,easyX(c/c++),c语言,学习,开发语言

修改outtextxy函数,让其输出多个字符(字符串)
c语言图形化,easyX(c/c++),c语言,学习,开发语言
文字居中

	//把文字居中
	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);

运行结果:
c语言图形化,easyX(c/c++),c语言,学习,开发语言


输出图片

c语言图形化,easyX(c/c++),c语言,学习,开发语言
举例:
输出图片相对路径时,把文件放在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);//前面坐标用变量也可以

运行结果为:

c语言图形化,easyX(c/c++),c语言,学习,开发语言

鼠标消息函数(老版)

c语言图形化,easyX(c/c++),c语言,学习,开发语言

举例:

	//鼠标信息
	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;
			}
		}
	}

运行结果:
c语言图形化,easyX(c/c++),c语言,学习,开发语言
判断鼠标是否在以上矩形中,若在就输出其语句

// 文字居中
	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;
			}
		}
	}

运行结果:
c语言图形化,easyX(c/c++),c语言,学习,开发语言

鼠标操作(新版)

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

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;
			}
		}
	}

运行结果:
c语言图形化,easyX(c/c++),c语言,学习,开发语言

键盘消息函数

非easyX函数
c语言图形化,easyX(c/c++),c语言,学习,开发语言

getch()

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

#include <conio.h> // 使用_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;
		}
	}

效果演示:
c语言图形化,easyX(c/c++),c语言,学习,开发语言
目前只是在控制台上操作

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

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;
		}
	}

效果演示:
c语言图形化,easyX(c/c++),c语言,学习,开发语言

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

开始:

	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 <stdio.h>
#include <graphics.h> // 包含图形库的头文件
#include <conio.h> // 使用_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;
}

音乐播放

c语言图形化,easyX(c/c++),c语言,学习,开发语言
这个只支持mp3,网易云的不行

# define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <graphics.h> // 包含图形库的头文件
#include <conio.h> // 使用_getch()   键位
#include <mmsystem.h>   // 包含多媒体设备接口头文件
                        //必须在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 继续

修改窗口标题,弹出框框

c语言图形化,easyX(c/c++),c语言,学习,开发语言

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()函数内
c语言图形化,easyX(c/c++),c语言,学习,开发语言文章来源地址https://www.toymoban.com/news/detail-782906.html

到了这里,关于easy X(C语言图形化界面)学习的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【精选】各种节日祝福(C语言,可修改),Easyx图形库应用+源代码分享

    博主:命运之光✨✨ 专栏:Easyx图形库应用📂 目录 ✨一、程序展示  范例一:❤新年祝福❤ 范例二:❤母亲节祝福❤ ✨二、项目环境 简单介绍一下easyx图形库应用 Easyx图形库 ✨三、运行效果展示(视频) ✨四、程序源代码分享 🍓文字可以自由输入(●\\\'◡\\\'●)🍓 🍓输入格

    2024年02月05日
    浏览(22)
  • 基于EasyX学习图形学中的三维几何变换【全】

    本文开始学习几何变换中的三维变换,对于各种变换的定义方法基本和二维变换一样,在此我就不过多赘述了。 三维变换矩阵 由于二维变换矩阵为三阶矩阵,所以三维变换矩阵为四阶矩阵 以下例子均在此正方体基础上 坐标表示 矩阵表示 变换矩阵 核心代码 效果展示 坐标表

    2024年02月09日
    浏览(14)
  • c语言练手项目【编写天天酷跑游戏2.0】EASYX图形库的运用。代码开源,素材已打包

    素材加Q群:723550115 项目是基于Windows,easyX图形库进行开发的, 开发环境:Visual Studio 2022 项目技术最低要求: 常量,变量,数组,循环,函数。 使用initgraph()初始化界面; 加载背景资源 写好游戏的图像化界面的框架 由于easyX不支持透明图片的的贴图,所以我们要自己写一个

    2024年02月15日
    浏览(22)
  • C语言编写图形界面

    使用的是VSCode + MinGW; VSCode配置C语言的环境就不讲了,具体可以看一下这篇文章:VSCode配置C语言环境 先说一下本篇文章编译的条件吧。 本篇文章需要编译器链接Windows GDI32库,所以如果你用的是VSCode+MinGW,就需要修改task.json文件,使其在链接的时候,链接Window GDI32库。 修改

    2024年02月11日
    浏览(9)
  • C语言实战 - 贪吃蛇(图形界面)

    由于本人精力有限,暂时先把素材和代码放上,等以后有空再补教程。 目录 效果预览 准备工作 EasyX图形库 音频素材 代码编写 Transfer.h文件 game.cpp文件 main.c文件 先来看一下最终成品效果 贪吃蛇图形界面 这个贪吃蛇项目是基于EasyX图形库写的,所以需要安装一个easy图像库,

    2024年02月05日
    浏览(15)
  • C语言实战 - 扫雷(图形界面-鼠标操作)

    目录 最终效果预览 预备内容 相关说明 相关教程 用到的知识 EasyX图形库的下载 思路 源代码 最后   在学习如何编写扫雷程序之前,我们先来看一下最终写成代码的演示效果 扫雷视频素材   虽然这是C语言的实战项目,但由于easyx图形库需要在C++环境下才能运行,所以在写代

    2024年02月09日
    浏览(11)
  • EasyX图形化学习(三)

    即每秒钟界面刷新次数,下面以60帧为例: 1.数据类型 clock_t: 用来保存时间的数据类型。 2.clock( ) 函数: 用于返回程序运行的时间,无需参数。 3.例子: 先定义所需帧率: 然后定义两个变量,用于表示一次循环运行前后的时间,再用Sleep函数休眠即可。 1.定义图片变量: 数

    2024年01月19日
    浏览(24)
  • easyx图形库基础4:贪吃蛇

    1.食物不可以生成到画布的外面; 2.不可以生成在蛇的身体上面; 3.食物是随机生成的; 1.蛇头碰到墙壁: 2.蛇头碰到蛇身体:

    2024年02月12日
    浏览(10)
  • C++ 之 Visual Studio 搭建 EasyX Graphics Library 图形库环境,并使用EasyX(graphics.h)绘制第一个图形

    目录 C++ 之 Visual Studio 搭建 EasyX Graphics Library  图形库环境,并使用EasyX(graphics.h)绘制第一个图形 一、简单介绍 二、Visual Studio 下载安装 三、EasyX Graphics Library 下载与安装到 Visual Studio 中 四、 EasyX(graphics.h)  和 Visual Studio C++  绘制第一个图形 五、关键代码 C++ 开发的一些知识

    2024年02月05日
    浏览(56)
  • easyx图形库基础:2.基本运动+键盘交互

    1.如何实现动画: 相信大家已经对动画的原理已经不陌生了。想要目标物体动起来,只需要逐个播放目标物体每一时刻位置的图片。只要播放的速度足够快,人们就会在视觉上认为目标物体动起来了。 帧率:具有连续性的一些图片在1秒中绘制的个数。 物体运动的速度单位一

    2024年02月12日
    浏览(15)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包