微雪墨水屏 如何 控制绘制图形(如点、线、矩形等)线条粗细或点的大小
在微雪(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_PIXEL | Paint_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. 使用注意事项
- 性能影响:
- 较大的
DOT_PIXEL
会增加绘图计算量,但对墨水屏刷新速度无直接影响(刷新时间由硬件决定)。
- 较大的
- 显示清晰度:
- 低分辨率屏幕(如2.7英寸)上,
DOT_PIXEL_3X3
以上可能导致图形边缘模糊。
- 低分辨率屏幕(如2.7英寸)上,
- 局刷限制:
- 若使用局部刷新,需确保放大后的图形不超出局刷区域边界。
6. 常见问题
Q:为何设置 DOT_PIXEL_8X8
后线条断裂?
- 原因:
坐标未对齐到8的倍数,导致像素块错位。 - 解决:
调整起始坐标为8的倍数(如x=16
而非x=15
)。
Q:如何实现抗锯齿效果?
- 墨水屏限制:
单色屏无法直接抗锯齿,但可通过DOT_PIXEL_2X2
和灰度模式(如有)模拟柔和边缘。
总结
DOT_PIXEL_1X1
是绘图精细度的基础单位,适用于需要高精度的图形。- 选择建议:
- 细节优先:
1X1
或2X2
(如小字体、图标)。 - 醒目优先:
4X4
或更大(如进度条、标题边框)。
- 细节优先:
- 组合技巧:
Paint_SetScale(2)
+DOT_PIXEL_2X2
可实现整体放大且保持比例。
以下是针对微雪(Waveshare)墨水屏驱动库中 绘图样式相关枚举和定义 的详细解析,涵盖 DOT_STYLE
、LINE_STYLE
和 DRAW_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. 关键注意事项
DOT_STYLE
的优先级:- 若
DOT_PIXEL
设为DOT_PIXEL_2X2
,同时DOT_STYLE
为DOT_FILL_RIGHTUP
,实际点大小为 3x3像素(2+1扩展)。
- 若
- 性能影响:
DRAW_FILL_FULL
和DOT_PIXEL
较大时会增加绘图时间,但墨水屏刷新速度仍由硬件决定。
- 兼容性:
- 部分旧型号墨水屏可能不支持
LINE_STYLE_DOTTED
,需测试验证。
- 部分旧型号墨水屏可能不支持
总结
DOT_STYLE
:控制点绘制的扩展方向,与DOT_PIXEL
配合调整点/线粗细。LINE_STYLE
:选择实线或虚线,影响线条连续性。DRAW_FILL
:决定图形是否填充内部,用于绘制实心/空心形状。
通过灵活组合这些参数,可精准控制墨水屏的绘图效果,平衡显示清晰度与刷新效率。