原理
基于Windows图形编程,将Windows下的复杂程序过程进行封装,仅给用户提供一个简单熟悉的接口。用户对于图形库中函数的调用,最终都会由Windows底层的API实现。
窗口的创建与关闭
-
创建
-
包含 EasyX 图形库的头文件
#include<graphisc.h> //老版 头文件 可以使用所有函数 #include<easyx.h> //新版 头文件 只能使用最新的函数
-
初始化窗口函数
-
函数原型
HWND initgraph( int width, int height, int flag = NULL );
-
width为所要创建窗口的宽,height为所要创建窗口的高,flag为绘图窗口的样式
-
flag默认为 NULL,也可以为
值 含义 EX_DBLCLKS 在绘图窗口中支持鼠标双击事件。 EX_NOCLOSE 禁用绘图窗口的关闭按钮。 EX_NOMINIMIZE 禁用绘图窗口的最小化按钮。 EX_SHOWCONSOLE 显示控制台窗口。 -
列如
-
以下代码片段创建一个尺寸为 640x480 的绘图窗口:
initgraph(640, 480);
-
以下代码片段创建一个尺寸为 640x480 的绘图窗口,同时显示控制台窗口:
initgraph(640, 480, EX_SHOWCONSOLE);
-
以下代码片段创建一个尺寸为 640x480 的绘图窗口,同时显示控制台窗口,并禁用关闭按钮:
initgraph(640, 480, EX_SHOWCONSOLE | EX_NOCLOSE);
-
-
-
设置窗口背景颜色
-
设置颜色,宏定义
//RGB 宏用于将红、绿、蓝颜色分量合成颜色 COLORREF RGB( BYTE byRed, // 颜色的红色部分 BYTE byGreen, // 颜色的绿色部分 BYTE byBlue // 颜色的蓝色部分 );
-
byRed 颜色的红色部分,取值范围:0~255。
-
byGreen 颜色的绿色部分,取值范围:0~255。
-
byBlue 颜色的蓝色部分,取值范围:0~255。
-
-
设置当前设备绘图背景色,函数原型
void setbkcolor(COLORREF color);
-
color 指定要设置的背景颜色。
-
-
-
重绘窗口
-
使用当前背景色清空绘图设备,函数原型
void cleardevice();
-
-
-
关闭
-
关闭创建出来的窗口,函数原型为
void closegraph();
-
基本绘图
-
点
-
绘制点,函数原型
void putpixel( int x, int y, COLORREF color );
-
x为绘制点的横坐标,y为绘制点的纵坐标,color为绘制点的颜色
-
-
线
-
绘制直线,函数原型
void line( int x1, int y1, int x2, int y2 );
-
x1为绘制直线起点的横坐标,y1为绘制直线起点的纵坐标,x2为绘制直线终点的横坐标,y2为绘制直线终点的纵坐标。
-
-
矩形
-
绘制无填充矩形,函数原型
void rectangle( int left, int top, int right, int bottom );
-
left 为矩形左部 x 坐标,top 为矩形顶部 y 坐标,right 为矩形右部 x 坐标,bottom 为矩形底部 y 坐标
-
-
画有边框的填充矩形,函数原型
void fillrectangle( int left, int top, int right, int bottom );
-
left 为矩形左部 x 坐标,top 为矩形顶部 y 坐标,right 为矩形右部 x 坐标,bottom 为矩形底部 y 坐标
-
-
画无边框的填充矩形,函数原型
void solidrectangle( int left, int top, int right, int bottom );
-
left 为矩形左部 x 坐标,top 为矩形顶部 y 坐标,right 为矩形右部 x 坐标,bottom 为矩形底部 y 坐标
-
-
-
圆
-
画无填充的圆,函数原型
void circle( int x, int y, int radius );
-
x 为圆心横坐标,y 为圆心纵坐标,radius 为园的半径
-
-
画有边框无填充的圆,函数原型
void fillcircle( int x, int y, int radius );
-
x 为圆心横坐标,y 为圆心纵坐标,radius 为园的半径
-
-
画无边框填充的圆,函数原型
void solidcircle( int x, int y, int radius );
-
x 为圆心横坐标,y 为圆心纵坐标,radius 为园的半径
-
-
文字输出
-
设置文字类型
-
设置当前文字样式,函数原型
void settextstyle( int nHeight, int nWidth, LPCTSTR lpszFace );
-
nHeight 字体的高度,nWidth 字体的宽度 0为自适应,lpszFace 为字体的样式(电脑中有的字体样式的文件名,名字里不能出现空格)
-
-
设置当前设备图案填充和文字输出时的背景模式,函数原型
void setbkmode(int mode);
-
mode 指定图案填充和文字输出时的背景模式,可以是以下值:
值 描述 OPAQUE 背景用当前背景色填充(默认)。 TRANSPARENT 背景是透明的。
-
-
-
设置文字颜色
-
设置当前文字颜色,函数原型
void settextcolor(COLORREF color);
-
color 要设置的文字颜色。
-
-
-
文字输出函数
-
在指定位置输出字符串,函数原型
void outtextxy( int x, int y, LPCTSTR str );
-
x 为要输出文件左上顶点的横坐标,y为要输出文件左上顶点的纵坐标,str 为要输出的字符串。
-
-
贴图
-
图片的加载
-
从文件中读取图像,函数原型
// 从图片文件获取图像(bmp/gif/jpg/png/tif/emf/wmf/ico) void loadimage( IMAGE* pDstImg, // 保存图像的 IMAGE 对象指针 LPCTSTR pImgFile, // 图片文件名 int nWidth = 0, // 图片的拉伸宽度 int nHeight = 0, // 图片的拉伸高度 bool bResize = false // 是否调整 IMAGE 的大小以适应图片 );
-
-
图片的显示
-
用于在当前设备上绘制指定图像,函数原型
//No.1 // 绘制图像 void putimage( int dstX, // 绘制位置的 x 坐标 int dstY, // 绘制位置的 y 坐标 IMAGE *pSrcImg, // 要绘制的 IMAGE 对象指针 DWORD dwRop = SRCCOPY // 三元光栅操作码 ); //No.2 // 绘制图像(指定宽高和起始位置) void putimage( int dstX, // 绘制位置的 x 坐标 int dstY, // 绘制位置的 y 坐标 int dstWidth, // 绘制的宽度 int dstHeight, // 绘制的高度 IMAGE *pSrcImg, // 要绘制的 IMAGE 对象指针 int srcX, // 绘制内容在 IMAGE 对象中的左上角 x 坐标 int srcY, // 绘制内容在 IMAGE 对象中的左上角 y 坐标 DWORD dwRop = SRCCOPY // 三元光栅操作码 );
-
三元光栅操作码(即位操作模式),支持全部的 256 种三元光栅操作码,常用的几种如下:
值 含义 DSTINVERT 目标图像 = NOT 目标图像 MERGECOPY 目标图像 = 源图像 AND 当前填充颜色 MERGEPAINT 目标图像 = 目标图像 OR (NOT 源图像) NOTSRCCOPY 目标图像 = NOT 源图像 NOTSRCERASE 目标图像 = NOT (目标图像 OR 源图像) PATCOPY 目标图像 = 当前填充颜色 PATINVERT 目标图像 = 目标图像 XOR 当前填充颜色 PATPAINT 目标图像 = 目标图像 OR ((NOT 源图像) OR 当前填充颜色) SRCAND 目标图像 = 目标图像 AND 源图像 SRCCOPY 目标图像 = 源图像 SRCERASE 目标图像 = (NOT 目标图像) AND 源图像 SRCINVERT 目标图像 = 目标图像 XOR 源图像 SRCPAINT 目标图像 = 目标图像 OR 源图像 -
AND / OR / NOT / XOR 为布尔运算。
-
-