根据以前学习笔记整理,分享给正在学习easyX的朋友。
(一):与设备相关的函数
1.void clearcliprgn():此函数以当前背景色清除裁剪区域,无参,无返回值。
2.void cleardevice():此函数用于清除绘图设备,无参,无返回值。具体地说,就是绘图设备将以当前背景色清空,并将当前点移动到(0,0)。
3.void closegraph(); 此函数用于关闭图形窗口,无参,无返回值。
4.void getaspectratio(float *pxasp,float *pyasp):获取当前图形模式的纵横比,无返回值。使用方法:分别声明x方向和y方向两个float变量,用&符号取址后作为函数的参数;函数执行后这两个变量的值即是当前窗口在x方向及y方向的缩放比,这两个值有正负号,负号表示坐标轴方向被置反向了。
5.void graphdefaults():此函数将视图、当前点、绘图颜色、背景颜色、线条样式、填充样式、字体样式等重置为默认;无参,无返回值。
6.HWND initgraph(int width,int height,int flag = NULL):此函数用于初始化图形窗口,参1 窗口宽度;参2 窗口高度,参3 是否同时显示控制台窗口,返回值是窗口的句柄。
7.void setaspectratio(float xasp, float yasp):此函数用于设置当前长、宽方向缩放比(相当于比例尺)及x轴、y轴的朝向。如:setaspectratio(1,-1)表示x、y两轴无缩放,但Y轴朝向改为向上。无返回值,参数含义同getaspectratio()。
8.void setcliprgn(HRGN hrgn);此功能用于设置当前绘图设备的剪切区域,将该区域设置为裁剪区后,任何区域外的绘图都将无效。参数 裁剪区域句柄;无返回值。
HRGN类型是 Windows 定义的表示区域的句柄。可以使用 Windows GDI 函数创建一个区域。例如,创建矩形区域可以使用函数:HRGN hrgn=CreateRectRgn(int left, int top, int right, int bottom);此外,还可以使用函数 CreateEllipticRgn 创建椭圆形的区域,使用 CreatePolygonRgn 创建多边形的区域等等。
9.void setorigin(int x, int y);该函数用于设置相对坐标原点;参1、2 拟设置为原点的物理坐标。easyX物理坐标系的原点在屏幕左上角,x轴的正方向向右,y轴的正方向向下,与习惯不一致,如需改变,可以通过本函数。
(二):与颜色相关函数
10. COLORREF BGR(COLORREF color):BGR 宏用于交换颜色中的红色和蓝色。参 color需要交换红色和蓝色的颜色;返回值 返回交换红色和蓝色后的颜色。
颜色在内存中的表示形式为:0xbbggrr (bb=蓝,gg=绿,rr=红),但是显示缓冲区中的颜色表现形式为 0xrrggbb。注意,两者的红色和蓝色是相反的。直接操作显示缓冲区时,可以通过 BGR 宏交换颜色的红色和蓝色部分。(这个宏也可看做函数一般很少使用)
11. BYTE GetB(G|R)Value(COLORREF rgb):宏GetB(G|R)Value用于返回指定颜色的蓝(绿|红)色值。
12. COLORREF HSLtoRGB( float H, float S, float L):用于将HSL颜色转换为RGB颜色
13. COLORREF HSVtoRGB( float H, float S, float V):此函数用于将HSV颜色转换为RGB颜色
14.COLORREF RGB( BYTE Red,BYTE Green, BYTE Blue ):以三原色色彩体系定义一种颜色
15.COLORREF RGBtoGRAY(COLORREF rgb):用于返回与指定颜色对应的灰度颜色。
16.void RGBtoHSL(COLORREF rgb, float *H, float,*S,float *L):用于将RGB颜色转换为HSL颜色。
17.void RGBtoHSV(COLORREF rgb,float *H,float *S,float *V):用于将RGB颜色转换为HSV颜色
(三):与画图相关函数
18.void arc( int left,int top, int right, int bottom, double stangle,double endangle):用来画弧线,参数:left 弧的外切矩形的左上x坐标;top 弧的外切矩形的左上纵坐标;right 弧的外切矩形的右下x坐标;bottom 弧的外切矩形的右下y坐标;stangle 弧的起始角的弧度;
endangle 弧终止角的弧度;无返回值。
19.void circle( int x,int y, int radius):画一个不填充的圆,参数:x--圆心的x坐标,y--圆心的y坐标,radius--圆的半径;无返回值。
20.void clearellipse(int left, int top, int right,int bottom):使用背景色清除一个椭圆形区域,参数:left 椭圆外切矩形的左上角x坐标;top 椭圆外切矩形的左上角y坐标;right 椭圆外切矩形的右下角x坐标;bottom 椭圆外切矩形的右下角y坐标。
21.void clearpie( int left, int top, int right, int bottom,double stangle,double endangle):使用背景色清除扇形区域。参数:left 扇子所在的椭圆形的外切矩形的左上角x坐标;top 扇形所在的椭圆形的外切矩形的左上y坐标;right 扇形所在的椭圆的外切矩形的右下x坐标;
bottom 扇形所在的椭圆的外切矩形的右下y坐标;stangle 扇形的起始角度的弧度;endangle 扇形端角的弧度。
22.void clearpolygon( const POINT *points, int num):使用背景色清除多边形区域。参1:
points 每个点的坐标,参2 坐标个数 num。举例:POINT points[] = { {100,100},{150,100},{200,200},{150,300},{100,300},{50,200} }; //注意坐标点的顺序
clearpolygon(points, 6); //6--多边形顶点个数
23.void clearrectangle(int left, int top, int right, int bottom):使用背景色清除矩形区域。参数:left 矩形左边的x坐标;top 矩形上端的y坐标;right 矩形右边的x坐标;bottom 矩形下端的y坐标。
24.void clearrectangle(int left, int top, int right, int bottom):使用背景色清除矩形区域。参数:left 矩形左边的x坐标;top 矩形上端的y坐标;right 矩形右边的x坐标;bottom 矩形下端的y坐标。
25.void clearroundrect(int left,int top,int right,int bottom,int ellipsewidth,int ellipseheight):使用背景色清除圆角矩形区域;参数:left 矩形左边的x坐标;top 矩形上端的y坐标;right
矩形右边的x坐标;bottom 矩形下端的y坐标;ellipsewidth 构成圆角矩形的椭圆的宽度;ellipseheight 构成圆角矩形的椭圆的高度。
26.void ellipse( int left, int top, int right, int bottom):用于绘制不填充的椭圆。参数:left 椭圆外切矩形的左上角x坐标;top 椭圆外切矩形的左上角y坐标;right 椭圆外切矩形的右下角x坐标;bottom 椭圆外切矩形的右下角y坐标。
27.void fillcircle ( int x, int y, int radius ):用于绘制带边框的填充圆;参数:x中心的x坐标;y圆心的y坐标;radius圆的半径。
28.void fillellipse( int left, int top, int right, int bottom):用于绘制带有边框的填充椭圆。参数:left 椭圆外切矩形的左上角x坐标;top 椭圆外切矩形的左上角y坐标;right 椭圆外切矩形的右下角x坐标;bottom 椭圆外切矩形的右下角y坐标。
29.void fillpie( int left, int top, int right, int bottom, double stangle,double endangle):用于绘制带边框的填充扇区;参数:left 扇区所在的椭圆形的外切矩形的左上角x坐标;top y坐标位于扇区所在的椭圆形外切矩形的左上角;right 扇区所在的椭圆的外切矩形的右下x坐标;bottom 位于扇区所在的椭圆形外切矩形的右下角y坐标;stangle 扇区的起始角度的弧度;endangle 扇区端角的弧度。
30.void fillpolygon( const POINT *points, int num):该函数用于绘制带有边框的填充多边形;参数:points 每个点的坐标,自动将多边形按points顺序连接到末端,num多边形顶点的数目;无返回值。
31.void fillrectangle( int left, int top, int right, int bottom):用于绘制带有边框的填充矩形。
参数:left 矩形左上角x坐标;top 矩形左上角的y坐标;right 矩形右下角x坐标;bottom 矩形右下角y坐标。无返回值。
32.void fillroundrect( int left, int top, int right, int bottom, int ellipsewidth, int ellipseheight):绘制一个带边框的已填充圆角矩形;参数:left 矩形左边的x坐标;top 矩形上端的y坐标;
right 矩形右边的x坐标;bottom 矩形下端的y坐标;ellipsewidth 构成圆角矩形的椭圆的宽度;ellipseheight 构成圆角矩形的椭圆的高度。(相当于倒角)
33.void floodfill( int x, int y, COLORREF color, int filltype = FLOODFILLBORDER):用于填充区域。参数:x 要填满的区域内任意点的x坐标;y 要填满的区域内任意点的y坐标;color 要填充的边界或区域的颜色;filltype 要执行的填充操作的类型。这可以是以下宏或值:宏值 描述:FLOODFILLBORDER(0)填充动作被填充在一个被颜色参数color包围的封闭区域中;
FLOODFILLSURFACE(1) 填充动作由颜色参数color指定的连续颜色表面填充。
34.int getheight():用于获取绘制区域的高度;无参,有返回值。
35.int getwidth():用于获取绘图区域的宽度;无参,有返回值。
36.COLORREF getpixel(int x,int y):用于获取点的颜色。参数:x 欲获得颜色的x坐标;y欲获得颜色的y坐标;返回值类型是无符号长整型。
37.void line( int x1, int y1, int x2, int y2):此函数用于绘制直线。参数:x1 直线起始点的x坐标;y1 直线起始点的y坐标;x2 直线端点的x坐标;y2 直线端点的y坐标;
38 void lineto(int x,int y): 从当前点划线到坐标(x,y);无返回值。
39 void linerel (int dx,int dy): 从当前点(x,y)画线到(x+dx,y+dy);无返回值。
40 void moveto(int x,int y): 将当前点设置到x,y点;无返回值。
41 void moverel(int dx,int dy):将当前点移动dx和dy;无返回值。
42 int getx() / int gety() :获取当前点x和y坐标。
43.void pie( int left, int top, int right, int bottom, double stangle, double endangle):用于绘制未填充的扇形;参数:left 扇形所在的椭圆形的外切矩形的左上角x坐标;top 扇形所在的椭圆形的外切矩形的左上角y坐标;right 扇形所在椭圆的外切矩形的右下x坐标;bottom
扇形所在椭圆形的外切矩形的右下y坐标;stangle 扇形的起始角度的弧度值;endangle 扇形末端角的弧度值。
44.void polygon( const POINT *points, int num):用于绘制不填充的多边形;参数:points
每个点的坐标组成的素组,num 多边形顶点的数目;无返回值。(注意点的顺序)
45.void polyline( const POINT *points, int num):用于绘制多条连续的直线。参数:points
每个点的坐标组成的数组,num 线段的顶点数;无返回值。
46.void putpixel( int x, int y, COLORREF color):用于绘制点;参数:x点的x坐标;y 点的y坐标;color 点的颜色。
47.void rectangle( int left, int top, int right, int bottom):用于绘制矩形;参数:left 矩形左边的x坐标;top 矩形上端的y坐标;right 矩形右边的x坐标;bottom 矩形下端的y坐标;无返回值。
48.void roundrect( int left, int top, int right, int bottom, int ellipsewidth, int ellipseheight):用于绘制不填充的圆角矩形;参数:left 矩形左边的x坐标;top 矩形上端的y坐标;right 矩形右边的x坐标;bottom 矩形下端的y坐标;ellipsewidth 构成圆角矩形椭圆的宽度;
ellipseheight 构成圆角矩形的椭圆的高度。
备注: 椭圆宽度=2*长轴半径 椭圆高度=2*短轴半径 即圆角用了椭圆的1/4部分 若椭圆长宽选相同数字,即用圆构成圆角。
49.void solidcircle( int x, int y, int radius):用于绘制一个没有边框的填充圆;无返回值。
50.void solidellipse( int left, int top, int right, int bottom):用于绘制一个填充的没有边框的椭圆。
51.void solidpie( int left, int top, int right, int bottom, double stangle, double endangle):用于绘制一个没有边框的填充扇区。
52.void solidpolygon( const POINT *points, int num):用于绘制填充的无边框多边形。
53.void solidrectangle( int left, int top, int right, int bottom):用于绘制一个填充的、没有边框的矩形。
54.void solidroundrect( int left, int top, int right, int bottom, int ellipsewidth, int ellipseheight):用于绘制没有边框的填充圆角矩形。
(四) 颜色和样式设置相关函数
55.class FILLSTYLE:填充样式。
56.COLORREF getbkcolor():获取当前设备背景颜色,无参,返回颜色值。
57.int getbkmode():用于获得打印图案和文本输出时的背景模式。背景模式包括:OPAQUE 背景用当前背景色填充(默认);TRANSPARENT背景是透明的。
58.COLORREF getfillcolor():获取当前填充色,无参,返回颜色值。
59.void getfillstyle( FILLSTYLE* pstyle):获取当前填充样式。参数:pstyle指向返回的当前填充样式;无返回值。
60.COLORREF getlinecolor(): 获取当前设备画线颜色,无参,返回颜色值。
61.void getlinestyle( LINESTYLE* pstyle):获取当前设备划线风格。参数:pstyle指向返回的划线风格。
62.int getpolyfillmode():用于获取当前设备的多边形填充模式;如果函数执行成功,返回值表示当前设备多边形填充模式,值为 ALTERNATE 或 WINDING。如果函数执行失败,返回值为 0。
63.class LINESTYLE:画线方式对象
64.void setbkcolor(COLORREF color):用于设置当前绘图的背景颜色,参数 颜色值(颜色值也可以用RGB()设定),无返回值。
65.void setbkmode(int mode):用于设置当前设备文本输出时的背景模式。参数 背景模式包括:OPAQUE 背景用当前背景色填充(默认);TRANSPARENT背景是透明的;无返回值。
66.void setfillcolor(COLORREF color):设置填充颜色,参数 颜色值,无返回值。
67.void setfillstyle(int pattern, int color) 为各种图形函数设置填充图样和颜色函数,用法:attern 为填充图样,color为填充颜色,在绘制图形前先要调用此函数进行设置;填充图样:----------------------------------------------------------------------------------------
填充图样符号 取值 说明
----------------------------------------------------------------------------------------
EMPTY_FILL 0 用背景色填充区域
SOLID_FILL 1 实色填充
LINE_FILL 2 --------填充
LTSLASH_FILL 3 填充
SLASH_FILL 4 粗线填充
BKSLASH_FILL 5 粗线填充
LTBKSLASH_FILL 6 填充
HATCH_FILL 7 网格线填充
xHATCH_FILL 8 斜网格线填充
INTEREAVE_FILL 9 间隔点填充
WIDE_DOT_FILL 10 大间隔点填充
CLOSE_DOT_FILL 11 小间隔点填充
USER_FILL 12 用户定义图样填充
68.void setlinecolor(COLORREF color):用于设置当前线的颜色,参数:颜色值,无返回值。
69.void setlinestyle( const LINESTYLE* pstyle)
void setlinestyle( int style, int thickness = 1, const DWORD *puserstyle = NULL, DWORD userstylecount = 0):用于设置当前设备画线样式。
70.void setpolyfillmode(int mode):用于设置当前设备的多边形填充模式。
(5)文本相关函数
71.COLORREF gettextcolor():用于获取当前文本的颜色,无参,返回颜色值。
72.void gettextstyle(LOGFONT *font):用于获取当前文本样式。参数:字体指向LOGFONT结构的指针。
73.void outtextxy( int x, int y, LPCTSTR str)
void outtextxy( int x, int y, TCHAR c):用于在指定位置输出字符串。参数:x 字符串输出时x轴上第一个字母的坐标值;y 字符串输出时第一个字母y轴的坐标值。str 指向要输出字符串的指针。c 要输出的字符。
74.void settextcolor(COLORREF color):用于设置当前文本的颜色。
75.void settextstyle(const LOGFONT *font)
void settextstyle( int nHeight, int nWidth, LPCTSTR lpszFace):(字高,0,"字体")--0自适应;用于样式化当前字体。
76.int textheight(LPCTSTR str)
int textheight(TCHAR c):用于获取字符串实际占用的像素高度。
77.int textwidth(LPCTSTR str)
int textwidth(TCHAR c):用于获取字符串实际占用的像素的宽度。
(六) 图像相关函数
78.void getimage( IMAGE* pDstImg, int srcX,int srcY, int srcWidth, int srcHeight):用于从当前绘图设备获取图像。参数:pDstImg 保存图像的图像对象指针;srcX 获取图像区域左上角的x坐标;srcY 获取图像区域左上角的y坐标;srcWidth 得到的面积的宽度;srcHeight 得到的面积的高度。
79.DWORD* GetImageBuffer ( IMAGE* pImg = NULL):用于获取绘图设备的显示缓冲区指针。参数:pImg 绘图设备指针。如果为空,表示默认图形窗口。
80.HDC GetImageHDC(IMAGE* pImg = NULL):用于获取绘图设备句柄(HDC)。
81.IMAGE* GetWorkingImage():用于获取当前的绘图设备。
82.class IMAGE(int width = 0, int height = 0):图像对象
83.void loadimage (
IMAGE* pDstImg, //保存图像的图像对象指针
LPCTSTR pImgFile, //图片文件名
int nWidth , //图片的拉伸宽度
int nHeight, //图片的拉伸高度
bool bResize = false //是否调整图像大小以适应图片
):用于从文件中读取图像
拉伸宽度:即图片准备显示的宽度,拉伸高度:即图片准备显示的宽度,若充满:可用getwidth()和getheight()。
84.void putimage (
int dstX, //绘制位置的X坐标
int dstY, //绘制位置的Y坐标
IMAGE *pSrcImg, //图像对象指针绘制
DWORD dwRop = srccopy //三元光栅操作码(可缺省)
) 用于在当前设备上绘制指定的图像。
85.void Resize(
IMAGE* pImg,
int width,
int height
):用于调整指定绘图设备的尺寸。参数:pImg 指定要调整大小的绘图设备,如果为空,则为默认图形窗口;width 指定绘图设备的宽度;height 指定绘图设备的高度。
86.void rotateimage(
IMAGE *dstimg,
IMAGE *srcimg,
double radian,
COLORREF bkcolor = BLACK,
bool autosize = false,
bool highquality = true
):用于在图像中旋转绘制的内容,参数:dstimg 指定目标图像对象指针来保存旋转后的图像;srcimg 指定指向原始图像对象的指针;radian 指定旋转的弧度;bkcolor 指定旋转后创建的空格的颜色,默认为黑色;autosize 指定目标图像对象是否自动调整大小以完全适应旋转后的图像,默认为false;highquality 指定是否使用高质量旋转,在追求效率时使用低质量的轮换,默认为true。
87.void saveimage(
LPCTSTR strFileName,
IMAGE* pImg = NULL
):用于将绘图内容保存到图片文件中。参数 strFileName 指定文件名。文件扩展名表示保存的图片格式,支持bmp /gif/jpg/png/tif格式。现有文件将被覆盖。pImg 指向IMAGE对象的指针。如果为空,表示图形窗口。
88.void SetWorkingImage(IMAGE* pImg = NULL):用于设置当前的绘图设备。参数 pImg
绘图设备指针。如果为空,绘图设备是默认的图形窗口。
(七) 鼠标相关函数
89.void FlushMouseMsgBuffer():用于清空鼠标消息缓冲区
90.MOUSEMSG GetMouseMsg():用于获取鼠标消息。如果鼠标消息队列为空,等待直到有鼠标消息。
91.bool PeekMouseMsg(MOUSEMSG *pMsg, bool bRemoveMsg):用于获取鼠标消息并立即返回。
92.bool MouseHit():用于检查鼠标消息
93.struct MOUSEMSG
{
UINT uMsg; //当前鼠标信息。
bool mkCtrl; //按下CTRL键。
bool mkShift; // SHIFT键为down。
bool mkLButton;//鼠标左键按下。
bool mkMButton;//鼠标中键是向下的。
bool mkRButton;//点击鼠标右键。
int x;//光标的x坐标。(物理坐标)
int y;//光标的y坐标。(物理坐标)
int wheel;//鼠标滚轮滚动值。
}:用于保存鼠标消息
(八):其它函数
94.void BeginBatchDraw():用于开始批量绘图模式。在执行之后,任何绘图操作将暂时不输出到图形窗口,直到调用函数flushBatchDraw或EndBatchDraw。
95.void EndBatchDraw()
void EndBatchDraw(
int left,
int top,
int right,
int bottom ):结束批量绘制模式,刷新未显示的图形。参数: left 指定区域的左x坐标;top 指定区域的顶部y坐标;right 指定区域的右x坐标;bottom 指定区域的底部y坐标。
97.void FlushBatchDraw()
void FlushBatchDraw(
int left,
int top,
int right,
int bottom
):用于刷新未显示的图形 参数:left 指定区域的左x坐标;top 指定区域的顶部y坐标;right
指定区域的右x坐标;bottom 指定区域的底部y坐标。
98.HWND GetHWnd():用于获取图形窗口的句柄