最近做一个项目用OLED屏做显示,屏幕显示内容比较简单,就直接移植正点原子的LCD屏幕里的绘图函数来做了,在测试画线函数时,发现斜线的最后一行只有一个小点。效果如下图:
经过测试,发现这个小点确实是画线中传参的第二个点位置,并不是程序BUG。由于屏幕的分辨率很低,所以看起就很突兀。而且这个现象并不是个例,只要是斜线都会出现这种情况,极端一些的像一条线如果Y方向只有两个像素时,会出现下图的情况:
这种斜线正常情况应该是在中间换行,于是检查对画线函数并做了修改,修改后的画线函数如下:
void lcd_drawline(unsigned short x1, unsigned short y1, unsigned short x2, unsigned short y2)
{
u16 t;
int xerr = 0, yerr = 0, delta_x, delta_y, distance;
int incx, incy, uRow, uCol;
delta_x = x2 - x1; /* 计算坐标增量 */
delta_y = y2 - y1;
uRow = x1;
uCol = y1;
if(delta_x > 0) /* 设置单步方向 */