EasyX学习笔记1:线条

目录

  • 一、线条颜色
    • 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) 宏或预定义颜色常量(如 REDBLUE)。

示例

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(异或模式)

五、注意事项

  1. 虚线限制PS_DASHPS_DOT 仅在 thickness = 1 时有效。
  2. 自定义虚线:需与 PS_USERSTYLE 配合,数组长度应为偶数。

六、综合示例

#include 
#include 
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文档 - 绘图

你可能感兴趣的:(C++游戏开发【EasyX】,c++)