1. 设置背景颜色,并且将原来是背景颜色的像素替换成新的背景颜色
void setbkcolor(color_t color, PIMAGE pimg = NULL);
2. 只设置背景颜色,对像素不做修改
void setbkcolor_f(color_t color, PIMAGE pimg = NULL);
(如第一次设置背景颜色,想替换背景颜色的情况。)
(避免不想清屏的区域受影响)
(避免不想清屏的区域受影响)
void setcolor(color_t color, PIMAGE pimg = NULL);
void setfillcolor(color_t color, PIMAGE pimg = NULL);
可以设置实线,虚线,点线等,还可以设置线宽
void setlinestyle(int linestyle, WORD upattern = NULL, int thickness = 1, PIMAGE pimg = NULL);
参数说明:setlinestyle( 线型, 自定义线性, 线宽, 绘制的目标)
当线宽不为1时,画出来都会是实线,所以设置线宽不为1时线型失效,库的问题
enum line_styles { 线型注释
SOLID_LINE = PS_SOLID, 实线 = 0
CENTER_LINE = PS_DASH, 虚线 = 1
DOTTED_LINE = PS_DOT, 点线 = 2
DASHED_LINE = PS_DASHDOT, 点虚线 = 3
NULL_LINE = PS_NULL, 不可见 = 5
USERBIT_LINE = PS_USERSTYLE, 用户自定义 = 7
};
upattern, 自定义线型, 16位
当 linestyle 为 USERBIT_LINE时,这个参数生效,从低位到高位一次代表从开始到末尾方向的每16个像素是否填充, 1代表填充 ,0代表不填充。
thickness, 线宽,与线型冲突, 大于1时线型失效
thickness 是浮点型,线的宽度, 单位是像素,可以很大。
void setlinewidth(float thickness, PIMAGE pimg = NULL);
这个需要注意,这个设置线宽函数只有在调用后调用一次 setcolor() 才会生效。
setlinewidth(thickness);
setcolor(color)
绘图默认使用当前颜色来进行绘制,但是可以设置使用其它颜色,比如黑色,白色,窗口颜色和当前颜色的混合。
setwritemode()
void settarget(PIMAGE pbuf = NULL);
PIMAGE gettarget();
EGE部分绘图函数:
http://xege.org/manual/api/draw/index.htm
很多函数都有PIMAGE 参数, 这个是指向IMAGE对象的指针,默认值为NULL,即直接绘制到窗口中。
画出的图形可以看到线条会有锯齿,不是很美观,所以如果想要美观,可以使用高级绘图函数
绘图函数请查看官网的库函数绘图函数文档,下面只挑几个说明一下
函数的使用请查阅库函数目录
http://xege.org/manual/api/draw/index.htm
void putpixel(int x, int y, color_t color, PIMAGE pimg = NULL);
void putpixels(int nPoint, int* pPoints, PIMAGE pimg = NULL);
参数:
nPoint:点的数目。
pPoints: 指向点的描述的指针,一个int型的数组,依次每三个int描述一个点:第一个为x坐标,第二个为y坐标,第三个为颜色值。
这个需要注意,如果要使用绘制多个点的 putpixels() 或 putpixels_f(), 由源码可知,用的是BGR 颜色**(原因不清楚)**,可以使用 RGBTOBGR() 进行转换
如,绘制4个点, 每个点需要用三个int, 那么四个点就是4 * 3 个int.
int nPoint = 4;
int points[4 * 3] = {
100, 100, RGBTOBGR(EGERGB(0XFF, 0, 0)),
101, 100, RGBTOBGR(EGERGB(0XFF, 0, 0)),
100, 101, RGBTOBGR(EGERGB(0XFF, 0, 0)),
101, 101, RGBTOBGR(EGERGB(0XFF, 0, 0)),
};
putpixels(nPoint, points);
画一条 从(x1, y1)到(x2, y2)的线。
void line(int x1, int y1, int x2, int y2, PIMAGE pimg = NULL);
从当前点到目标点画一条直线, 当前点由 moveto(x, y) 指定, 也可以使用 moverel(dx, dy) 作相对位置移动。
void lineto(int x, int y, PIMAGE pimg = NULL);
从当前点画一条到相对位置的直线。
void linerel(int dx, int dy, PIMAGE pimg = NULL);
void circle(int x, int y, int radius, PIMAGE pimg = NULL)
x, y, 圆中心坐标, radius, 圆半径
示例:circle(320, 240, 100); //圆心在(320, 240)的半径为100的圆
void fillellipse(int x, int y, int xradius, int yradius,PIMAGE pimg = NULL);
x, y 椭圆中心坐标
xradius, yradius, 两个半轴的长度, 相等即为一个圆的半径。
使用示例:fillellipse(320, 240, 100, 100); //圆心在(320, 240)的半径为100的填充圆。
椭圆长短半轴相等就是圆了。所以使用 fillellipse(x, y, radius, radius) 即可
使用填充椭圆 fillellipse( ),长短半轴相等的椭圆就是圆
如果画好了,可以自己手动给某些地方涂上颜色
先设置填充颜色
void setfillcolor(color_t color, PIMAGE pimg = NULL);
指定边界色填充
将一个边界颜色为border的封闭图形内部填充,x, y为边界内部的某个点。填充的颜色由 setfillcolor() 指定
void floodfill(int x, int y, int border, PIMAGE pimg = NULL);
指定区域色填充
将areacolor颜色的色块填充,x, y为色块内的某个点 。
void floodfillsurface(int x, int y, int areacolor, PIMAGE pimg = NULL);