/**
* @brief 在 OLED 上绘制两点之间的直线
* @param x0: 起点 x 坐标
* @param y0: 起点 y 坐标
* @param x1: 终点 x 坐标
* @param y1: 终点 y 坐标
* @注意范围(0~127)(0~64)
*/
void OLED_DrawLine(uint8_t x0, uint8_t y0, uint8_t x1, uint8_t y1)
{
int dx = abs(x1 - x0);
int dy = abs(y1 - y0);
int sx = (x0 < x1) ? 1 : -1;
int sy = (y0 < y1) ? 1 : -1;
int err = dx - dy;
int e2;
while (1) {
// 绘制当前点
OLED_DrawPoint(x0, y0);
// 如果到达终点,退出循环
if (x0 == x1 && y0 == y1) break;
e2 = 2 * err;
if (e2 > -dy) {
err -= dy;
x0 += sx;
}
if (e2 < dx) {
err += dx;
y0 += sy;
}
}
}
学习记录 / STM32