EasyX在线文档
EasyX 是针对 C++ 的图形库,可以帮助 C/C++ 初学者快速上手图形和游戏编程。
enter回车键
哔哩哔哩:enter回车键。
微信公众号:C语言函数与案例。
展开
-
编译错误:EasyX is only for C++
错误描述:在 Visual C++ 中编译引用 graphics.h 头文件后,编译产生错误:fatal error C1189: #error : EasyX is only for C++错误原因:为了降低学习编程的干扰,EasyX 库在很大程度上简化了图形函数的使用。由于在简化图形函数的过程中使用了部分 c++ 的特性,因此,当代码是 .c 扩展名时,Visual C++ 会调用 c 编译器而不是 c++ 编译器,以至于产生这个编译错误。解决方案:不用修改任何程序代码.转载 2020-07-31 15:33:10 · 7304 阅读 · 5 评论 -
编译错误:2 个重载中没有一个可以转换所有参数类型
错误描述:一些程序在 VC6 下运行好好地,但是放到 VC2008 及更高版本 VC 下编译却报错误(以下仅以 VC2008 举例,高版本 VC 类似),例如使用如下语句:outtextxy(10, 20, "Hello World");在 VC6 下可以成功编译,但在 VC2008 下编译后会有错误。错误提示如下:error C2665: “outtextxy”: 2 个重载中没有一个可以转换所有参数类型同样的,对于其他一些包含字符串调用的函数,例如 loadima..转载 2020-07-31 15:32:18 · 7726 阅读 · 1 评论 -
与 BGI 绘图库的兼容情况
使用 EasyX 绘图库有两种方式:1. 引用 easyx.h 头文件。该头文件是 EasyX 绘图函数的声明,引用后可以直接调用 EasyX 绘图函数。2. 引用 graphics.h 头文件。该头文件是对 easyx.h 的扩展,用于模拟额外的 BGI 函数。本文讲解这两种方式和 BGI 绘图库的区别,以及这样设计的具体原因。(注:BGI 是 Borland 公司早期的绘图接口,在 Turbo C 和 Borland C/C++ 系列开发工具中广泛使用)easyx.h 的应用场合基于转载 2020-07-31 15:31:26 · 333 阅读 · 0 评论 -
常见问题
这里列举出了使用 EasyX 的一些常见问题:编译错误:“2 个重载中没有一个可以转换所有参数类型” 编译错误:“EasyX is only for C++” 与 BGI 绘图库的兼容情况更多的常见问题,请访问EasyX 官方网站,以及EasyX 社区。还可以到EasyX 社区进行更多编程问题的讨论。...转载 2020-07-31 15:29:58 · 167 阅读 · 0 评论 -
setwritemode
这个函数用于设置前景的二元光栅操作模式。void setwritemode(int mode);参数mode二元光栅操作码,详见setrop2函数。返回值无备注该函数在 graphics.h 中声明,用于兼容 Turbo C 中的同名函数,等效于 easyx.h 中的setrop2函数。建议使用setrop2替代该函数。示例无...转载 2020-07-31 15:29:11 · 403 阅读 · 0 评论 -
getmaxy
这个函数用于获取绘图窗口的物理坐标中的最大 y 坐标。int getmaxy();参数无返回值返回绘图窗口的物理坐标中的最大 y 坐标。备注该函数在 graphics.h 中声明,用于兼容 Turbo C 中的同名函数。getmaxy() 总是返回绘图窗口的物理坐标中的最大 y 坐标,与缩放设置无关。等价于getheight()- 1。例如,初始化为 640 x 480 的绘图窗口,getheight() 返回 480,getmaxy() 返回 479。建议使...转载 2020-07-31 15:27:32 · 210 阅读 · 0 评论 -
getmaxx
该函数用于获取绘图窗口的物理坐标中的最大 x 坐标。int getmaxx();参数无返回值返回绘图窗口的物理坐标中的最大 x 坐标。备注该函数在 graphics.h 中声明,用于兼容 Turbo C 中的同名函数。getmaxx() 总是返回绘图窗口的物理坐标中的最大 x 坐标,与缩放设置无关。等价于getwidth()- 1。例如,初始化为 640 x 480 的绘图窗口,getwidth() 返回 640,getmaxx() 返回 639。建议使用g...转载 2020-07-31 15:26:40 · 247 阅读 · 0 评论 -
getcolor
这个函数用于获取当前绘图前景色。COLORREF getcolor();参数无返回值返回当前的前景颜色。备注该函数在 graphics.h 中声明,用于兼容 Turbo C 中的同名函数。由于 Turbo C 绘图函数并未区分画线和文字颜色,因此不完全等效于 easyx.h 中的getlinecolor或gettextcolor函数。建议根据需求使用getlinecolor或gettextcolor代替该函数。示例无...转载 2020-07-29 17:24:43 · 650 阅读 · 0 评论 -
fillpoly
这个函数用于画有边框的填充多边形。void fillpoly( int numpoints, const int *polypoints);参数numpoints多边形顶点的个数。polypoints每个点的坐标,数组元素个数为 numpoints * 2。该函数会自动连接多边形首尾。返回值无备注该函数在 graphics.h 中声明,用于兼容 Turbo C 中的同名函数,等效于 easyx.h 中的fillpolygon函数。建议使用fi...转载 2020-07-29 17:20:34 · 401 阅读 · 0 评论 -
drawpoly
这个函数用于画无填充的多边形。void drawpoly( int numpoints, const int *polypoints);参数numpoints多边形顶点的个数。polypoints每个点的坐标,数组元素个数为 numpoints * 2。该函数会自动连接多边形首尾。返回值无备注该函数在 graphics.h 中声明,用于兼容 Turbo C 中的同名函数,等效于 easyx.h 中的polygon函数。建议使用polygon...转载 2020-07-29 17:19:40 · 329 阅读 · 0 评论 -
bar3d
这个函数用于画有边框三维填充矩形。void bar3d( int left, int top, int right, int bottom, int depth, bool topflag);参数left矩形左部 x 坐标。top矩形顶部 y 坐标。right矩形右部 x 坐标。bottom矩形底部 y 坐标。depth矩形深度。topflag为 false 时,将不画矩形的三维顶部。该选项可用来画堆叠的三维矩形。返回值无.转载 2020-07-29 17:18:45 · 522 阅读 · 0 评论 -
bar
这个函数用于画无边框填充矩形。void bar( int left, int top, int right, int bottom);参数left矩形左部 x 坐标。top矩形顶部 y 坐标。right矩形右部 x 坐标。bottom矩形底部 y 坐标。返回值无备注该函数在 graphics.h 中声明,用于兼容 Turbo C 中的同名函数,等效于 easyx.h 中的solidrectangle函数。建议使用solidr...转载 2020-07-25 15:11:26 · 126 阅读 · 0 评论 -
graphics.h 新增函数
在 easyx.h 的基础上,graphics.h 保留了若干已经废弃的函数,以提高对旧程序的兼容性。在 graphics.h 里面额外提供的相关函数如下:函数或数据类型 描述 bar 画无边框填充矩形。 bar3d 画有边框三维填充矩形。 drawpoly 画无填充的多边形。 fillpoly 画有边框的填充多边形。 getcolor 获取当前绘图前景色。 getmaxx 获取绘图窗口的物理坐标中的最大 x 坐标。 getmax转载 2020-07-25 15:10:30 · 268 阅读 · 0 评论 -
InputBox
这个函数用于以对话框形式获取用户输入。bool InputBox( LPTSTR pString, int nMaxCount, LPCTSTR pPrompt = NULL, LPCTSTR pTitle = NULL, LPCTSTR pDefault = NULL, int width = 0, int height = 0, bool bHideCancelBtn = true);参数pString指定接收用户输入字符串的指针。nMaxCount.转载 2020-07-25 15:09:33 · 4085 阅读 · 0 评论 -
GetHWnd
这个函数用于获取绘图窗口句柄。HWND GetHWnd();参数无返回值返回绘图窗口句柄。备注在 Windows 下,句柄是一个窗口的标识,得到句柄后,可以使用 Windows API 中的函数实现对窗口的控制。注意,请不要通过该窗口句柄获取窗口的 DC 然后利用 GDI 函数实现对窗口的绘图操作。由于实现机制的问题,获取窗口的 DC 请使用GetImageHDC函数。示例// 获得窗口句柄HWND hWnd = GetHWnd();// 使用 Wi...转载 2020-07-25 15:08:11 · 2439 阅读 · 0 评论 -
GetEasyXVer
这个函数用于获取当前 EasyX 库的版本信息。TCHAR* GetEasyXVer();参数无返回值返回当前 EasyX 库的版本信息。示例以下代码实现输出当前 EasyX 版本号:#include <stdio.h>#include <graphics.h>int main(){ TCHAR* s = GetEasyXVer(); _tprintf("EasyX 当前版本:%s\n", s);}...转载 2020-07-25 15:07:17 · 158 阅读 · 0 评论 -
FlushBatchDraw
这个函数用于执行未完成的绘制任务。// 执行未完成的绘制任务void FlushBatchDraw();// 执行指定区域内未完成的绘制任务void FlushBatchDraw( int left, int top, int right, int bottom); 参数left指定区域的左部 x 坐标。top指定区域的上部 y 坐标。right指定区域的右部 x 坐标。bottom指定区域的下部 y 坐标。返回值无示例..转载 2020-07-25 15:05:49 · 5718 阅读 · 0 评论 -
EndBatchDraw
这个函数用于结束批量绘制,并执行未完成的绘制任务。// 结束批量绘制,并执行未完成的绘制任务void EndBatchDraw();// 结束批量绘制,并执行指定区域内未完成的绘制任务void EndBatchDraw( int left, int top, int right, int bottom);参数left指定区域的左部 x 坐标。top指定区域的上部 y 坐标。right指定区域的右部 x 坐标。bottom指定区域的下部..转载 2020-07-25 15:04:52 · 1255 阅读 · 0 评论 -
BeginBatchDraw
这个函数用于开始批量绘图。执行后,任何绘图操作都将暂时不输出到绘图窗口上,直到执行 FlushBatchDraw 或 EndBatchDraw 才将之前的绘图输出。void BeginBatchDraw();参数无返回值无示例以下代码实现一个圆从左向右移动,会有比较明显的闪烁。请取消 main 函数中的三个注释,以实现批绘图功能,可以消除闪烁。#include <graphics.h>int main(){ initgraph(640,480).转载 2020-07-25 15:03:56 · 4818 阅读 · 1 评论 -
其它函数
相关函数如下:函数或数据类型 描述 BeginBatchDraw 开始批量绘图。 EndBatchDraw 结束批量绘制,并执行未完成的绘制任务。 FlushBatchDraw 执行未完成的绘制任务。 GetEasyXVer 获取当前 EasyX 库的版本信息。 GetHWnd 获取绘图窗口句柄。 InputBox 以对话框形式获取用户输入。 ...转载 2020-07-25 15:02:58 · 149 阅读 · 0 评论 -
MOUSEMSG
这个结构体用于保存鼠标消息,定义如下:struct MOUSEMSG{ UINT uMsg; // 当前鼠标消息 bool mkCtrl; // Ctrl 键是否按下 bool mkShift; // Shift 键是否按下 bool mkLButton; // 鼠标左键是否按下 bool mkMButton; // 鼠标中键是否按下 bool mkRButton; // 鼠标右键是否按下 int x; // 当前鼠标 x 坐标(物理坐标) int y; /转载 2020-07-23 16:24:53 · 4076 阅读 · 2 评论 -
MouseHit
这个函数用于检测当前是否有鼠标消息。bool MouseHit();参数无返回值如果存在鼠标消息,返回 true;否则返回 false。示例无转载 2020-07-23 16:18:27 · 2652 阅读 · 0 评论 -
GetMouseMsg
这个函数用于获取一个鼠标消息。如果当前鼠标消息队列中没有,就一直等待。MOUSEMSG GetMouseMsg();参数无返回值返回保存有鼠标消息的结构体。备注默认情况下,连续的鼠标单击会被识别为一系列的单击事件。如果希望两个连续的鼠标单击识别为双击事件,请在创建绘图窗口的时候指定标志位 EW_DBLCLKS。示例请参见示例程序中的“鼠标操作范例”。...转载 2020-07-23 16:16:19 · 4880 阅读 · 2 评论 -
FlushMouseMsgBuffer
这个函数用于清空鼠标消息缓冲区。void FlushMouseMsgBuffer();参数无返回值无示例无转载 2020-07-23 16:14:07 · 1510 阅读 · 1 评论 -
鼠标相关函数
鼠标消息缓冲区可以缓冲 63 个未处理的鼠标消息。每一次 GetMouseMsg 将从鼠标消息缓冲区取出一个最早发生的消息。当鼠标消息缓冲区满了以后,不再接收任何鼠标消息。相关函数如下:函数或数据类型 描述 FlushMouseMsgBuffer 清空鼠标消息缓冲区。 GetMouseMsg 获取一个鼠标消息。如果当前鼠标消息队列中没有,就一直等待。 MouseHit 检测当前是否有鼠标消息。 MOUSEMSG 保存鼠标消息的结构体。 ...转载 2020-07-23 15:49:58 · 472 阅读 · 0 评论 -
三元光栅操作
这篇文档列出了 putimage 函数支持的所有三元光栅操作码。三元光栅操作码定义了源图像与目标图像的位合并形式,这个合并形式是以下三个操作数对应像素的布尔运算:操作数 含义 D 目标图像 P 当前填充颜色 S 源图像 布尔运算符包括以下几种:操作 含义 a 位的 AND 运算(双目运算) n 位的 NOT 运算(单目运算) o 位的 OR 运算(双目运算) x 位的 XOR 运算(双目运算) 所有的布尔操转载 2020-07-22 15:36:44 · 789 阅读 · 0 评论 -
SetWorkingImage
这个函数用于设定当前的绘图设备。void SetWorkingImage(IMAGE* pImg = NULL);参数pImg绘图设备指针。如果为 NULL,表示绘图设备为默认绘图窗口。返回值无备注如果需要对某个 IMAGE 做绘图操作,可以通过该函数将其设置为当前的绘图设备,之后所有的绘图语句都会绘制在该 IMAGE 上面。将参数置为 NULL 可恢复对默认绘图窗口的绘图操作。示例#include <graphics.h>#include &.转载 2020-07-22 15:36:17 · 2254 阅读 · 0 评论 -
saveimage
这个函数用于保存绘图内容至图片文件。void saveimage( LPCTSTR strFileName, IMAGE* pImg = NULL);参数strFileName指定文件名。文件名的扩展名表示保存的图片格式,支持 bmp / gif / jpg / png / tif 格式。已存在的文件将被覆盖。pImg指向 IMAGE 对象的指针。如果为 NULL,表示绘图窗口。返回值无示例以下示例保存绘图窗口的内容为 "D:\test.bmp":.转载 2020-07-22 15:36:09 · 2235 阅读 · 0 评论 -
rotateimage
这个函数用于旋转 IMAGE 中的绘图内容。void rotateimage( IMAGE *dstimg, IMAGE *srcimg, double radian, COLORREF bkcolor = BLACK, bool autosize = false, bool highquality = true);参数dstimg指定目标 IMAGE 对象指针,用来保存旋转后的图像。srcimg指定原 IMAGE 对象指针。radian指定旋转的弧度。.转载 2020-07-22 15:36:26 · 1362 阅读 · 0 评论 -
Resize
这个函数用于调整指定绘图设备的尺寸。void Resize( IMAGE* pImg, int width, int height);参数pImg指定要调整尺寸的绘图设备。如果为 NULL,则表示默认绘图窗口。width指定绘图设备的宽度。height指定绘图设备的高度。返回值无备注无示例无...转载 2020-07-21 16:57:17 · 194 阅读 · 0 评论 -
putimage
这个函数的几个重载用于在当前设备上绘制指定图像。// 绘制图像void putimage( int dstX, // 绘制位置的 x 坐标 int dstY, // 绘制位置的 y 坐标 IMAGE *pSrcImg, // 要绘制的 IMAGE 对象指针 DWORD dwRop = SRCCOPY // 三元光栅操作码);// 绘制图像(指定宽高和起始位置)void putimage( int dstX, // 绘制位置的 x 坐标 int dst.转载 2020-07-21 16:57:05 · 2562 阅读 · 0 评论 -
loadimage
这个函数用于从文件中读取图像。// 从图片文件获取图像(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 的大小以适应图片);转载 2020-07-21 16:56:54 · 1077 阅读 · 1 评论 -
IMAGE
图像对象。class IMAGE(int width = 0, int height = 0);公有成员int getwidth();返回 IMAGE 对象的宽度,以像素为单位。int getheight();返回 IMAGE 对象的高度,以像素为单位。operator =实现 IMAGE 对象的直接赋值。该操作仅拷贝源图像的内容,不拷贝源图像的绘图窗口。示例以下代码片段创建 img1、img2 两个对象,之后加载图片 test.jpg 到 img1,并通过赋.转载 2020-07-21 16:56:42 · 412 阅读 · 0 评论 -
GetWorkingImage
这个函数用于获取当前的绘图设备。IMAGE* GetWorkingImage();参数无返回值返回指向当前绘图设备的指针。如果返回值为 NULL,表示当前绘图设备为绘图窗口。示例无转载 2020-07-21 16:56:33 · 204 阅读 · 0 评论 -
GetImageHDC
这个函数用于获取绘图设备句柄(HDC)。HDC GetImageHDC(IMAGE* pImg = NULL);参数pImg绘图设备指针。如果为 NULL,表示默认的绘图窗口。返回值返回绘图设备句柄(HDC)。备注获取到的 HDC 句柄可以用在 Windows GDI 函数中。每个 IMAGE 对象都有一个 HDC 句柄,可以通过 HDC 句柄实现对该 IMAGE 的 GDI 函数操作。在同一个 IMAGE 设备中,请勿混用 EasyX 绘图函数和 GDI 绘图函.转载 2020-07-21 16:56:13 · 780 阅读 · 0 评论 -
GetImageBuffer
这个函数用于获取绘图设备的显示缓冲区指针。DWORD* GetImageBuffer(IMAGE* pImg = NULL);参数pImg绘图设备指针。如果为 NULL,表示默认的绘图窗口。返回值返回绘图设备的显示缓冲区指针。备注获取到的显示缓冲区指针可以直接读写。在显示缓冲区中,每个点占用 4 个字节,因此:显示缓冲区的大小 = 宽度 × 高度 × 4 (字节)。像素点在显示缓冲区中按照从左到右、从上向下的顺序依次排列。访问显示缓冲区请勿越界,否则会造成难以预料.转载 2020-07-21 16:56:04 · 2283 阅读 · 0 评论 -
getimage
这个函数用于从当前绘图设备中获取图像。// 从当前绘图设备获取图像void getimage( IMAGE* pDstImg, // 保存图像的 IMAGE 对象指针 int srcX, // 要获取图像区域左上角 x 坐标 int srcY, // 要获取图像区域的左上角 y 坐标 int srcWidth, // 要获取图像区域的宽度 int srcHeight // 要获取图像区域的高度);参数pDstImg保存图像的 IMAGE 对象指针。sr.转载 2020-07-21 16:55:49 · 1942 阅读 · 0 评论 -
图像处理相关函数
相关函数和数据如下:函数或数据类型 描述 IMAGE 保存图像的对象。 loadimage 读取图片文件。 saveimage 保存绘图内容至图片文件。 getimage 从当前绘图设备中获取图像。 putimage 在当前绘图设备上绘制指定图像。 GetWorkingImage 获取指向当前绘图设备的指针。 rotateimage 旋转 IMAGE 中的绘图内容。 SetWorkingImage 设定当前绘图设备。转载 2020-07-21 16:54:52 · 154 阅读 · 0 评论 -
textwidth
这个函数用于获取字符串实际占用的像素宽度。int textwidth(LPCTSTR str);int textwidth(TCHAR c);参数str指定的字符串指针。c指定的字符。返回值该字符串实际占用的像素宽度。示例无...转载 2020-07-21 13:32:17 · 823 阅读 · 0 评论 -
textheight
这个函数用于获取字符串实际占用的像素高度。int textheight(LPCTSTR str);int textheight(TCHAR c);参数str指定的字符串指针。c指定的字符。返回值该字符串实际占用的像素高度。示例无...转载 2020-07-17 17:21:44 · 273 阅读 · 0 评论