问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

C/C++图形化编程——EasyX使用教程

创作时间:
作者:
@小白创作中心

C/C++图形化编程——EasyX使用教程

引用
1
来源
1.
https://www.jindouyun.cn/document/industry/details/179664

本文是一篇关于EasyX图形化编程的教程文章,详细介绍了EasyX的各种功能和使用方法,包括创建图形化窗口、基本绘图函数、图像处理函数、鼠标消息函数、音乐播放等。文章结构清晰,内容丰富,适合C/C++初学者学习图形化编程。本文原文发布于2024年7月。

1. 创建图形化窗口

a. 包含头文件

有两种头文件可供选择:

  • graphics.h:包含已经淘汰的函数
  • easy.h:只包含最新的函数

b. 几种窗口函数

  1. 打开窗口函数:initgraph(int x, int y, int style)
  • x:窗口宽度(像素)
  • y:窗口高度(像素)
  • style:窗口样式(如DEFAULTNOCLOSE等)
  1. 关闭窗口函数:closegraph()

  2. 清空绘图函数:cleardevice()

c. 窗口坐标的知识

窗口坐标系如下图所示:

确定一个矩形框只需要给出左上角和右下角的坐标即可。

2. 基本绘图函数

a. 设置填充样式函数

绘图函数从填充样式分类可分为无填充、有边框填充、无边框三种。以画圆为例:

  • circle():无填充
  • fillcircle():有边框填充
  • solidcircle():无边框填充

b. 设置图形样式函数

按所画的图形形状分类,有以下常用几类图形函数:

  • circle():画圆
  • elipse():画椭圆
  • pie():画扇形
  • polygon():画多边形
  • rectangle:画矩形
  • roundrect:画圆角矩形
  • line:画线
  • putpixel:画点

c. 设置颜色函数

  1. 设置填充颜色函数:setfillcolor(颜色)
  2. 设置线条颜色函数:setlinecolor(颜色)
  3. 设置线条样式函数:setlinestyle(线型, 宽度)
  4. 设置背景颜色函数:setbkcolor(颜色)

d. 文字绘制函数

  1. 输出字符串函数:outtextxy(int x, int y, LPCTSTR str)
  2. 设置文字样式函数:settextstyle(int font, int direction, int charsize)
  3. 设置文字背景模式:setbkmode(int mode)
  4. 设置文字颜色函数:settextcolor(COLORREF color)
  5. 获取文本宽和高函数:textheight(LPCTSTR str)textwidth(LPCTSTR str)

3. 图像处理函数

在使用图像之前,需要定义一个对象,然后把图片加载进变量才能使用。使用EasyX提供的IMAGE类型。

  1. 图像加载函数:loadimage(IMAGE *img, LPCTSTR filename, int width, int height, BOOL shared = FALSE)
  2. 图像输出函数:BOOL putimage(HDC hdcDest, int xDest, int yDest, constvoid *img, DWORD rop = SRCCOPY)

4. 鼠标消息函数

鼠标消息函数包含在easyx.h头文件中,常用的消息有:

  • WM_MOUSEMOVE:鼠标移动消息
  • WM_LBUTTONDOWN:鼠标左键按下消息
  • WM_LBUTTONUP:鼠标左键弹起消息
  • WM_RBUTTONDOWN:鼠标右键按下消息
  • WM_RBUTTONUP:鼠标右键弹起消息

5. 鼠标画线操作

通过定时器逻辑实现画图功能:

  1. 画图过程可拆解为两个步骤:鼠标点击+鼠标拖动→画线
  2. 停止画线的逻辑:即鼠标停止拖动(不松开),并且再拖动可以继续画

6. 音乐播放

使用mciSendString函数播放音乐,支持MP3格式。常用指令有:

  • open:打开
  • pause:暂停
  • resume:继续
  • close:关闭
  • play:播放

7. 阻塞式和非阻塞式

  • 阻塞式(Blocking):程序会一直等待某个事件的发生,直到该事件发生后才会继续执行后续代码。
  • 非阻塞式(Non-blocking):程序会定期地轮询或检查事件是否发生,如果发生了则立即处理,如果没有则继续执行后续代码。

相关函数:

  1. kbhit():等待键盘输入
  2. GetMouseMsg():等待鼠标消息
  3. GetKey():等待键盘按键消息
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号