目录
基础绘图
画笔设置
设置当前绘画颜色
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时线型失效,库的问题
- linestyle, 线型
linestyle只能从多个枚举中选择
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()
绘图目标
- 我们绘图时经常省略PIMAGE参数,此时默认是绘制到窗口上,也可以设置为默认绘制到其它窗口上。
- 设置当前绘图对象。
pbuf
绘图对象,为PIMAGE类型,你要绘画到的PIMAGE,如果不填,则还原为窗口
void settarget(PIMAGE pbuf = NULL);
- 获取当前绘图对象。
PIMAGE gettarget();
图形的绘制
EGE部分绘图函数:
http://xege.org/manual/api/draw/index.htm
很多函数都有PIMAGE 参数, 这个是指向IMAGE对象的指针,默认值为NULL,即直接绘制到窗口中。
(1) 普通绘图函数
普通绘图函数带有锯齿
画出的图形可以看到线条会有锯齿,不是很美观,所以如果想要美观,可以使用高级绘图函数
普通绘图函数使用的是RGB颜色
- 接下来说的是普通绘图函数,和后面的高级绘图函数区别开来。
- 普通绘图函数使用RGB颜色,ARGB颜色中的透明度对于普通绘图来说是无效的(高级绘图函数则可以使用透明度),不能调整透明度,所以不能把颜色设置为ARGB颜色,否则很有可能颜色会变成黑色(有些不会)
- 图形的颜色是由前景色和填充颜色指定, setcolor()设置前景色, setfillcolor()设置填充颜色,设置颜色后,颜色就一直有效,直到下次设置。
绘图函数
绘图函数请查看官网的库函数绘图函数文档,下面只挑几个说明一下
函数的使用请查阅库函数目录
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( ),长短半轴相等的椭圆就是圆
来源:CSDN
作者:依稀_yixy
链接:https://blog.csdn.net/qq_39151563/article/details/104342390