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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/970620.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于SSM+uniapp的鲜花销售小程序+LW示例参考

1.项目介绍 系统角色&#xff1a;管理员、商户功能模块&#xff1a;用户管理、商户管理、鲜花分类管理、鲜花管理、订单管理、收藏管理、购物车、充值、下单等技术选型&#xff1a;SSM&#xff0c;Vue&#xff08;后端管理web&#xff09;&#xff0c;uniapp等测试环境&#x…

项目版本号生成

需求 项目想要生成一个更新版本号&#xff0c;格式为v2.0.20250101。 其中v2.0为版本号&#xff0c;更新时进行配置&#xff1b;20250101为更新日期&#xff0c;版本更新时自动生成。 实现思路 创建一个配置文件version.properties&#xff0c;在其中配置版本号&#xff1b…

Unity UI个人总结

个人总结&#xff0c;太简单的直接跳过。 一、缩放模式 1.固定像素大小 就是设置一个100x100的方框&#xff0c;在1920x1080像素下在屏幕中长度占比1/19&#xff0c;在3840x2160&#xff0c;方框在屏幕中长度占比1/38。也就是像素长款不变&#xff0c;在屏幕中占比发生变化 2.…

ArcGIS基础知识之ArcMap基础设置——ArcMap选项:常规选项卡设置及作用

作为一名 GIS 从业者,ArcMap 是我们日常工作中不可或缺的工具。对于初学者来说,掌握 ArcMap 的基础设置是迈向 GIS 分析与制图的第一步。今天,就让我们一起深入了解 ArcMap 选项中常规选项卡的各个设置,帮助大家更好地使用这款强大的软件。 在 ArcMap 中,常规选项卡是用户…

jenkins war Windows安装

Windows安装Jenkins 需求1.下载jenkins.war2.编写快速运行脚本3.启动Jenkins4.Jenkins使用 需求 1.支持在Windows下便捷运行Jenkins&#xff1b; 2.支持自定义启动参数&#xff1b; 3.有快速运行的脚步样板。 1.下载jenkins.war Jenkins下载地址&#xff1a;https://get.j…

知识管理成功:关键指标和策略,研究信息的投资回报率

信息过载会影响生产力。没有人工智能的帮助&#xff0c;信息过载会影响生产力。大量的可用信息&#xff0c;知识工作者不仅仅是超负荷工作&#xff1b;他们感到不知所措&#xff0c;他们倾向于浪费时间&#xff08;和脑细胞&#xff09;来应付他们被大量的数据抛向他们&#xf…

wps或office的word接入豆包API(VBA版本)

直接上代码&#xff0c;由于时间匆忙&#xff0c;以后写个详细的教程 #If VBA7 ThenPrivate Declare PtrSafe Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, ByVal szFileName As…

PHP场地预定小程序

&#x1f3df;️ 场地预定小程序 —— 您的智慧场馆管理专家&#xff0c;让预订变得如此简单&#xff01; &#x1f4f1; 场地预定小程序&#xff0c;一款专为运动场馆运营而生的多场馆场地预定神器&#xff0c;采用PHPUniApp框架匠心打造。无论是体育馆、羽毛球馆、乒乓球馆、…

GC 基础入门

什么是GC&#xff08;Garbage Collection&#xff09;&#xff1f; 内存管理方式通常分为两种&#xff1a; 手动内存管理&#xff08;Manual Memory Management&#xff09;自动内存管理&#xff08;Garbage Collection, GC&#xff09; 手动内存管理 手动内存管理是指开发…

dify.ai 配置链接到阿里云百练等云厂商的 DeepSeek 模型

要将 dify.ai 配置链接到阿里云百练等云厂商的 DeepSeek 模型. 申请阿里云百练的KEY 添加模型 测试模型

C++ Primer 函数重载

欢迎阅读我的 【CPrimer】专栏 专栏简介&#xff1a;本专栏主要面向C初学者&#xff0c;解释C的一些基本概念和基础语言特性&#xff0c;涉及C标准库的用法&#xff0c;面向对象特性&#xff0c;泛型特性高级用法。通过使用标准库中定义的抽象设施&#xff0c;使你更加适应高级…

【MySql】应用系统等保测评MySQL服务器相关策略设置以及最终验证,MySQL安全策略设置以及最终验证

文章目录 一、概要二、环境及实现三、前期准备四、操作步骤1、所有的数据库需要设置三权账户&#xff1a;系统管理员、网络管理员和安全管理员创建系统管理员账户&#xff1a;创建网络管理员账户&#xff1a;创建安全管理员账户&#xff1a; 2、所有数据库密码的负责度策略需要…

【吾爱出品】针对红警之类老游戏适用WIN10和11的补丁cnc-ddraw7.1汉化版

针对红警之类老游戏适用WIN10和11的补丁cnc-ddraw7.1汉化版 链接&#xff1a;https://pan.xunlei.com/s/VOJ8PZd4avMubnDzHQAeZDxWA1?pwdnjwm# 直接复制到游戏安装目录&#xff0c;保持与游戏主程序同目录下。

28 在可以控制 postgres 服务器, 不知道任何用户名的情况下怎 进入 postgres 服务器

前言 最近有这样的一个需求, 有一个 postgres 服务器 但是 不知道 他的任何的用户名密码, 但是我想要查询这台 postgres 服务器 然后 基于这个需求, 我们看一下 怎么来处理 pg_hba.conf 认证方式修改为 trust 首先将 postgres 服务器的认证方式修改为 trust 这时候 …

Mac ARM 架构的命令行(终端)中,删除整行的快捷键是:Ctrl + U

在 Mac ARM 架构的命令行&#xff08;终端&#xff09;中&#xff0c;删除整行的快捷键是&#xff1a; Ctrl U这个快捷键会删除光标所在位置到行首之间的所有内容。如果你想删除光标后面的所有内容&#xff0c;可以使用&#xff1a; Ctrl K这两个快捷键可以帮助你快速清除当…

编程题-最大子数组和(中等-重点【贪心、动态规划、分治思想的应用】)

题目&#xff1a; 给你一个整数数组 nums &#xff0c;请你找出一个具有最大和的连续子数组&#xff08;子数组最少包含一个元素&#xff09;&#xff0c;返回其最大和。 子数组是数组中的一个连续部分。 解法一&#xff08;枚举法-时间复杂度超限&#xff09;&#xff1a; …

aws(学习笔记第二十八课) aws eks使用练习(hands on)

aws(学习笔记第二十八课) 使用aws eks 学习内容&#xff1a; 什么是aws eksaws eks的hands onaws eks的创建applicationeks和kubernetes简介 1. 使用aws eks 什么是aws eks aws eks的概念 aws eks是kubernetes在aws上包装出来 的新的方式&#xff0c;旨在更加方便结合aws&…

解读 Flink Source 接口重构后的 KafkaSource

前言 Apache Kafka 和 Apache Flink 的结合&#xff0c;为构建实时流处理应用提供了一套强大的解决方案[1]。Kafka 作为高吞吐量、低延迟的分布式消息队列&#xff0c;负责数据的采集、缓冲和分发&#xff1b;而 Flink 则是功能强大的流处理引擎&#xff0c;负责对数据进行实时…

deepseek多列数据对比,联想到excel的高级筛选功能

目录 1 业务背景 ​2 deepseek提示词输入 ​3 联想分析 4 EXCEL高级搜索 1 业务背景 系统上线的时候经常会遇到一个问题&#xff0c;系统导入的数据和线下的EXCEL数据是否一致&#xff0c;如果不一致&#xff0c;如何快速找到差异值&#xff0c;原来脑海第一反应就是使用公…

ubuntu20.04声音设置

step1&#xff1a;打开pavucontrol&#xff0c;设置Configuration和Output Devices&#xff0c; 注意需要有HDMI / DisplayPort (plugged in)这个图标。如果没有&#xff0c;就先选择Configuration -> Digital Stereo (HDMI 7) Output (unplugged) (unvailable)&#xff0c;…