0.安装
c语言和c++还有计算机课程设计中含有绘制示意图的问题,最简单的方式是利用各种字符在命令行中绘制,但是局限性太大,更好的是利用graphics.lib包
在EasyX官网中可以下载c语言的EasyX
https://easyx.cn/
安装EasyX文档和对应编程软件的插件
EasyX文档是帮助文档,感觉特别实用
然后在编程中包含头文件
#include <graphics.h>
#include <conio.h>
即可
1.生成绘图窗口的三种方式,效果不同:
initgraph(700, 700); //仅显示绘图窗口
initgraph(700, 700, SHOWCONSOLE); //同时显示绘图窗口和命令行
initgraph(700, 700, SHOWCONSOLE | NOCLOSE); //同时显示绘图窗口和命令行并且禁用绘图窗口的关闭按钮
这时会生成一个绘图窗口,大小为700×700像素,也就是分辨率,以上三种方式均可
2.生成长方形:
rectangle(20, 45, 70, 55) //生成空心长方形
fillrectangle(20, 45, 70, 55); //生成实心长方形
“20, 45, 70, 55”这四个数字是坐标,在绘图窗口中,以左上角坐标为(0,0),x轴是向右为正,y轴是向下为正
20表示长方形最左边的x轴坐标,45表示长方形最上边的y轴坐标
70表示长方形最右边的x轴坐标,55表示长方形最下边的y轴坐标
3.生成圆形:
circle(20, 50, 20); //生成空心圆形
fillcircle(20, 50, 20); //生成实心圆形
生成 一个圆,圆心坐标为(20,50),半径为20
4.生成连线,连接两点:
line(a1, b1, a2, b2);
连线,连接(a1, b1),(a2, b2)两点
5.绘图颜色设置:
setlinecolor(GREEN); //线条颜色为green
setfillcolor(RED); //填充颜色为RED
举例:
setlinecolor(GREEN); // 设置当前线条颜色为green
setfillcolor(YELLOW); // 设置当前填充颜色yellow
fillrectangle(20, 45, 70, 55);
此时会生成一个边长为绿色,但内部填充色为黄色的长方形
注:bar(20, 45, 70, 55)生成“棒子”,函数参数与rectangle意义相同,但是bar函数不受 setlinecolor 线条颜色设置,只受 setfillcolor 填充颜色设置
6.字体设置
settextstyle(12, 0, _T("宋体")); //设置字体格式
outtextxy(75, 45, "你好hello");
在坐标(75,45)处打印文字"你好hello",高度12,自适应宽度,文字是宋体
void settextstyle(int nHeight, int nWidth, LPCTSTR lpszFace)
nHeight: 字符的平均高度;
nWidth: 字符的平均宽度(0 表示自适应);
lpszFace: 字体名称;
7.字体颜色设置
settextcolor(YELLOW); //设置颜色为yellow
outtextxy(75, 45, "你好hello");
此时打印的字体是黄色,不必每次打印文字都要设置颜色,设置一次颜色后,后面的打印均是这个颜色,一直到下一个颜色设置才会改变
8.LOGFONT字体设置结构体介绍
LOGFONT字体设置的功能很多,参数设置也容易眼花缭乱
一般字体设置使用settextstyle(int nHeight, int nWidth, LPCTSTR lpszFace)
函数即可,但是遇到对字体要求较高时,可以使用settextstyle(const LOGFONT *font);
以下举一个简单例子
LOGFONT text; //定义结构体变量log
gettextstyle(&text); //获取当前字体设置,赋值给text
text.lfHeight = 22; //将字体高度改为22,宽度默认自适应
text.lfWeight = 1000; //将字体的粗细改为1000,可以设置0~1000,1000笔迹最粗
_tcscpy_s(text.lfFaceName, _T("宋体")); //将字体格式改为宋体
settextstyle(&text); //使用赋值好的text变量
有关其他参数的具体介绍可以看EasyX文档中的 函数说明-文字输出相关函数-LOGFONT
struct LOGFONT {
LONG lfHeight; //指定高度(逻辑单位)
LONG lfWidth; //指定字符的平均宽度(逻辑单位)。如果为 0,则比例自适应。
LONG lfEscapement; //字符串的书写角度,单位 0.1 度,默认为 0。
LONG lfOrientation; //每个字符的书写角度,单位 0.1 度,默认为 0。
LONG lfWeight; //字符的笔画粗细,范围 0~1000,0 表示默认粗细。
BYTE lfItalic; //指定字体是否是斜体。
BYTE lfUnderline; //指定字体是否有下划线。
BYTE lfStrikeOut; //指定字体是否有删除线。
BYTE lfCharSet; //指定字符集。
BYTE lfOutPrecision; //指定文字的输出精度。
BYTE lfClipPrecision; //指定文字的剪辑精度。
BYTE lfQuality; //指定文字的输出质量。
BYTE lfPitchAndFamily; //指定以常规方式描述字体的字体系列。
TCHAR lfFaceName[LF_FACESIZE]; //字体名称,名称不得超过 31 个字符。
};
其他绘图方法在EasyX文档中均有详细介绍,全中文的,很方便