当前位置: 首页 > ai >正文

微雪墨水屏 如何 控制绘制图形(如点、线、矩形等)线条粗细或点的大小

在微雪(Waveshare)墨水屏的绘图库中,DOT_PIXEL_1X1 是一个用于 控制绘制图形(如点、线、矩形等)线条粗细或点的大小 的枚举参数。它定义了单个逻辑像素的物理显示尺寸,直接影响绘制效果的精细程度。以下是详细解析:


1. 参数定义

DOT_PIXEL_1X1 是微雪 paint.h 中定义的枚举值,通常属于以下类型:

typedef enum {DOT_PIXEL_1X1 = 1,  // 1x1 像素点(最小单位)DOT_PIXEL_2X2,      // 2x2 像素块DOT_PIXEL_3X3,      // 3x3 像素块DOT_PIXEL_4X4,      // 4x4 像素块DOT_PIXEL_5X5,      // 5x5 像素块(部分型号支持)DOT_PIXEL_6X6,      // 6x6 像素块DOT_PIXEL_7X7,      // 7x7 像素块DOT_PIXEL_8X8       // 8x8 像素块(最大单位)
} DOT_PIXEL;

2. 核心作用

  • 控制线条/点的物理大小
    • DOT_PIXEL_1X1 表示每个逻辑点以 1x1 实际像素 显示(最细)。
    • DOT_PIXEL_8X8 表示每个逻辑点扩展为 8x8 像素块(最粗)。
  • 影响绘制效果
    较大的 DOT_PIXEL 值会使线条更粗、图形更醒目,但会牺牲细节。

3. 实际应用示例

(1) 绘制不同粗细的点
// 绘制三个不同大小的点(坐标Y递增)
Paint_DrawPoint(10, 20, BLACK, DOT_PIXEL_1X1, DOT_STYLE_DFT); // 1x1像素点
Paint_DrawPoint(10, 30, BLACK, DOT_PIXEL_3X3, DOT_STYLE_DFT); // 3x3像素块
Paint_DrawPoint(10, 40, BLACK, DOT_PIXEL_8X8, DOT_STYLE_DFT); // 8x8像素块
(2) 绘制不同粗细的线条
// 绘制三条不同粗细的水平线
Paint_DrawLine(20, 50, 100, 50, BLACK, DOT_PIXEL_1X1, LINE_STYLE_SOLID); // 细线
Paint_DrawLine(20, 70, 100, 70, BLACK, DOT_PIXEL_3X3, LINE_STYLE_SOLID); // 中等线
Paint_DrawLine(20, 90, 100, 90, BLACK, DOT_PIXEL_8X8, LINE_STYLE_SOLID); // 粗线
(3) 影响矩形边框
// 绘制两个矩形,边框粗细不同
Paint_DrawRectangle(20, 100, 80, 150, BLACK, DOT_PIXEL_1X1, DRAW_FILL_EMPTY); // 细边框
Paint_DrawRectangle(100, 100, 160, 150, BLACK, DOT_PIXEL_4X4, DRAW_FILL_EMPTY); // 粗边框

4. 与其他参数的交互

(1) 与 Paint_SetScale() 的区别
参数DOT_PIXELPaint_SetScale()
作用对象仅影响绘制的点、线、图形边框全局缩放所有绘图内容(包括文字)
单位物理像素块(1X1~8X8)逻辑比例(1/2/4倍)
典型用途调整线条粗细放大整体内容(如文字)
(2) 与 DOT_STYLE 的配合
  • DOT_STYLE_DFT(默认实心)和 DOT_STYLE_DOTTED(虚线)均受 DOT_PIXEL 影响:
    // 虚线(点间距受DOT_PIXEL影响)
    Paint_DrawLine(20, 120, 200, 120, BLACK, DOT_PIXEL_2X2, LINE_STYLE_DOTTED);
    

5. 使用注意事项

  1. 性能影响
    • 较大的 DOT_PIXEL 会增加绘图计算量,但对墨水屏刷新速度无直接影响(刷新时间由硬件决定)。
  2. 显示清晰度
    • 低分辨率屏幕(如2.7英寸)上,DOT_PIXEL_3X3 以上可能导致图形边缘模糊。
  3. 局刷限制
    • 若使用局部刷新,需确保放大后的图形不超出局刷区域边界。

6. 常见问题

Q:为何设置 DOT_PIXEL_8X8 后线条断裂?
  • 原因
    坐标未对齐到8的倍数,导致像素块错位。
  • 解决
    调整起始坐标为8的倍数(如 x=16 而非 x=15)。
Q:如何实现抗锯齿效果?
  • 墨水屏限制
    单色屏无法直接抗锯齿,但可通过 DOT_PIXEL_2X2 和灰度模式(如有)模拟柔和边缘。

总结

  • DOT_PIXEL_1X1 是绘图精细度的基础单位,适用于需要高精度的图形。
  • 选择建议
    • 细节优先1X12X2(如小字体、图标)。
    • 醒目优先4X4 或更大(如进度条、标题边框)。
  • 组合技巧
    Paint_SetScale(2) + DOT_PIXEL_2X2 可实现整体放大且保持比例。

以下是针对微雪(Waveshare)墨水屏驱动库中 绘图样式相关枚举和定义 的详细解析,涵盖 DOT_STYLELINE_STYLEDRAW_FILL 的作用及使用场景:


1. DOT_STYLE(点填充样式)

枚举定义
typedef enum {DOT_FILL_AROUND  = 1,  // 点像素为1x1(最小单位)DOT_FILL_RIGHTUP,      // 点像素为2x2(向右上方扩展)
} DOT_STYLE;
#define DOT_STYLE_DFT  DOT_FILL_AROUND  // 默认样式为DOT_FILL_AROUND
作用与区别
枚举值效果图示描述
DOT_FILL_AROUND外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传点的实际大小严格等于 DOT_PIXEL 设定值(如 DOT_PIXEL_1X1 为1x1像素)。
DOT_FILL_RIGHTUP外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传点的显示区域向右上方扩展,形成2x2像素块(即使 DOT_PIXEL 设为1x1)。
使用示例
// 绘制一个1x1像素的点(默认样式)
Paint_DrawPoint(10, 20, BLACK, DOT_PIXEL_1X1, DOT_FILL_AROUND);// 绘制一个2x2像素的点(即使DOT_PIXEL为1x1)
Paint_DrawPoint(30, 20, BLACK, DOT_PIXEL_1X1, DOT_FILL_RIGHTUP);

2. LINE_STYLE(线条样式)

枚举定义
typedef enum {LINE_STYLE_SOLID = 0,  // 实线LINE_STYLE_DOTTED,     // 虚线
} LINE_STYLE;
作用与区别
枚举值效果图示描述
LINE_STYLE_SOLID━━━━━━━连续实线,线条粗细由 DOT_PIXEL 控制。
LINE_STYLE_DOTTED┄┄┄┄┄┄┄虚线,虚线间隔和点大小由 DOT_PIXEL 决定(如 DOT_PIXEL_2X2 生成粗虚线)。
使用示例
// 绘制一条实线(粗细为3x3像素)
Paint_DrawLine(10, 50, 100, 50, BLACK, DOT_PIXEL_3X3, LINE_STYLE_SOLID);// 绘制一条虚线(点大小为2x2像素)
Paint_DrawLine(10, 70, 100, 70, BLACK, DOT_PIXEL_2X2, LINE_STYLE_DOTTED);

3. DRAW_FILL(图形填充模式)

枚举定义
typedef enum {DRAW_FILL_EMPTY = 0,  // 空心(仅边框)DRAW_FILL_FULL,       // 实心(填充内部)
} DRAW_FILL;
作用与区别
枚举值效果图示(矩形示例)描述
DRAW_FILL_EMPTY▢(仅边框)只绘制图形边框,边框粗细由 DOT_PIXEL 控制。
DRAW_FILL_FULL▣(完全填充)填充图形内部,颜色由绘图函数中的 color 参数指定。
使用示例
// 绘制一个空心矩形(边框粗细1x1像素)
Paint_DrawRectangle(20, 100, 80, 150, BLACK, DOT_PIXEL_1X1, DRAW_FILL_EMPTY);// 绘制一个实心矩形(填充为黑色)
Paint_DrawRectangle(100, 100, 160, 150, BLACK, DOT_PIXEL_1X1, DRAW_FILL_FULL);

4. 组合使用场景

(1) 绘制粗边虚线圆
Paint_DrawCircle(50, 50, 30,                 // 圆心(50,50),半径30BLACK, DOT_PIXEL_3X3,       // 3x3像素点,黑色LINE_STYLE_DOTTED,          // 虚线样式DRAW_FILL_EMPTY             // 空心
);
(2) 实心粗线进度条
// 填充矩形作为进度条
Paint_DrawRectangle(10, 180, 200, 200,          // 坐标范围BLACK, DOT_PIXEL_4X4,       // 4x4像素粗细DRAW_FILL_FULL              // 实心填充
);

5. 关键注意事项

  1. DOT_STYLE 的优先级
    • DOT_PIXEL 设为 DOT_PIXEL_2X2,同时 DOT_STYLEDOT_FILL_RIGHTUP,实际点大小为 3x3像素(2+1扩展)。
  2. 性能影响
    • DRAW_FILL_FULLDOT_PIXEL 较大时会增加绘图时间,但墨水屏刷新速度仍由硬件决定。
  3. 兼容性
    • 部分旧型号墨水屏可能不支持 LINE_STYLE_DOTTED,需测试验证。

总结

  • DOT_STYLE:控制点绘制的扩展方向,与 DOT_PIXEL 配合调整点/线粗细。
  • LINE_STYLE:选择实线或虚线,影响线条连续性。
  • DRAW_FILL:决定图形是否填充内部,用于绘制实心/空心形状。

通过灵活组合这些参数,可精准控制墨水屏的绘图效果,平衡显示清晰度与刷新效率。

http://www.xdnf.cn/news/8811.html

相关文章:

  • ChatGPT+知网,AI如何辅助真实科研写作流程?
  • 以太坊的基本理解
  • 2025年- H47-Lc155 --102. 二叉树的层序遍历(队列、广搜)--Java版
  • STL-从list节点创建和释放展开(内存管理)
  • Claude Code Agent 模式深度解读(一)!Anthropic提出的下一代Code CLI工具
  • 第四章 面向对象(基础)
  • ​​UniBoard:私有化部署,导航笔记文件一站式管理
  • JavaScript 中的 structuredClone() 如何彻底改变你的对象复制方式
  • 几个直觉泵问题
  • 线程池优雅关闭的哲学
  • java基础知识回顾3(可用于Java基础速通)考前,面试前均可用!
  • 空间计算的未来:在通用芯片上构建高可靠系统
  • 沙井SMT贴片加工核心工艺解析
  • JVM 的垃圾回收机制
  • Linux线程互斥与同步(下)(30)
  • 软件质量保证与测试实验
  • 历年北京师范大学保研上机真题
  • 数据库设计核心流程
  • 探索智能仓颉
  • 软件设计师-错题笔记-面向对象技术
  • 继电器相关梳理
  • pytorch基础
  • LabVIEW开发FPGA磁声发射应力检测系统
  • C++与Python中除法运算的区别(易错)
  • Linux路径解析指南:逻辑路径 vs 实际路径详解
  • Linux 文件系统
  • 第5章:任务间通信机制(IPC)全解析
  • 自定义 win10 命令
  • Leetcode 3269. 构建两个递增数组
  • 低空经济与新质生产力