目录
- 一、线条颜色
- 1. `setlinecolor` - 设置当前线条颜色
- 2. `getlinecolor` - 获取当前线条颜色
- 二、线条样式
- 1. `setlinestyle` - 设置线条样式(宽度、类型等)
- 三、绘制线条
- 1. `line` - 绘制两点间直线
- 2. `lineto` - 从当前位置画线到指定点
- 3. `linerel` - 相对当前位置画线
- 4. `polyline` - 绘制多段线
- 四、其他函数
- 1. `getlinestyle` - 获取当前线条样式
- 2. `setwritemode` - 设置线条绘制模式
- 五、注意事项
- 六、综合示例
一、线条颜色
1. setlinecolor
- 设置当前线条颜色
函数原型
void setlinecolor(COLORREF color);
参数
color
:线条颜色,使用RGB(r, g, b)
宏或预定义颜色常量(如RED
、BLUE
)。
示例
setlinecolor(RED); // 设置为红色
setlinecolor(RGB(0, 255, 0)); // 设置为绿色
2. getlinecolor
- 获取当前线条颜色
函数原型
COLORREF getlinecolor();
二、线条样式
1. setlinestyle
- 设置线条样式(宽度、类型等)
函数原型
void setlinestyle(
int style, // 线型(如 PS_SOLID, PS_DASH)
int thickness = 1, // 线宽(像素)
const DWORD *puserstyle = NULL, // 自定义虚线模式(需与 PS_USERSTYLE 配合)
DWORD userstylecount = 0
);
或使用结构体 LINESTYLE
(推荐):
struct LINESTYLE {
int style; // 线型
int thickness; // 线宽
DWORD *puserstyle; // 自定义虚线模式
DWORD userstylecount;
};
void setlinestyle(const LINESTYLE *pstyle);
参数说明
-
线型常量:
PS_SOLID
:实线(默认)PS_DASH
:虚线(线宽需为1)PS_DOT
:点线(线宽需为1)PS_DASHDOT
:点划线PS_USERSTYLE
:自定义虚线模式
-
端点样式:
PS_ENDCAP_ROUND
端点为圆形。PS_ENDCAP_SQUARE
端点为方形。PS_ENDCAP_FLAT
端点为平坦。
-
连接样式
PS_JOIN_BEVEL
连接处为斜面。PS_JOIN_MITER
连接处为斜接。PS_JOIN_ROUND
连接处为圆弧。
-
自定义虚线:
通过puserstyle
数组定义交替的虚实段长度(如{5, 3}
表示5像素实线 + 3像素空白)。
示例
// 设置红色虚线,线宽1
setlinestyle(PS_DASH, 1);
// 自定义虚线模式:10像素实线 + 5像素空白
DWORD style[] = {10, 5};
LINESTYLE ls = {PS_USERSTYLE, 1, style, 2};
setlinestyle(&ls);
三、绘制线条
1. line
- 绘制两点间直线
函数原型
void line(int x1, int y1, int x2, int y2);
void line(POINT pt1, POINT pt2); // 使用 POINT 结构体
示例
line(10, 20, 100, 200); // 从 (10,20) 到 (100,200) 画线
2. lineto
- 从当前位置画线到指定点
函数原型
void lineto(int x, int y);
void lineto(POINT pt);
需配合 moveto
使用
moveto(50, 50); // 移动起点到 (50,50)
lineto(200, 100); // 画线到 (200,100)
3. linerel
- 相对当前位置画线
函数原型
void linerel(int dx, int dy);
示例
moveto(100, 100);
linerel(50, -30); // 从 (100,100) 画到 (150,70)
4. polyline
- 绘制多段线
函数原型
void polyline(const POINT *points, int num);
示例
POINT pts[] = {{10,10}, {50,30}, {100,80}, {200,10}};
polyline(pts, 4); // 依次连接4个点
四、其他函数
1. getlinestyle
- 获取当前线条样式
函数原型
LINESTYLE getlinestyle();
2. setwritemode
- 设置线条绘制模式
函数原型
void setwritemode(int mode); // 如 R2_XORPEN(异或模式)
五、注意事项
- 虚线限制:
PS_DASH
、PS_DOT
仅在thickness = 1
时有效。 - 自定义虚线:需与
PS_USERSTYLE
配合,数组长度应为偶数。
六、综合示例
#include <graphics.h>
#include <conio.h>
int main() {
initgraph(640, 480); // 初始化窗口
setbkcolor(WHITE);
cleardevice();
setlinecolor(RED);
line(50, 50, 200, 50); // 绘制红色实线
// 设置虚线样式
LINESTYLE ls;
ls.style = PS_DASH;
ls.thickness = 1;
setlinestyle(&ls);
line(50, 100, 200, 100); // 绘制红色虚线
// 使用异或模式绘制线条
setwritemode(R2_XORPEN);
setlinecolor(GREEN);
line(50, 150, 200, 150); // 第一次绘制
line(50, 150, 200, 150); // 第二次绘制会擦除
_getch();
closegraph();
return 0;
}
建议结合官方文档和实际代码练习加深理解。
官方:EasyX文档 - 绘图