// ============================================ // 画线程序 // 起点:x0,y0; 终点:xt,yt 颜色:color // 开始调用画线初始化函数,画完之后复位成8点写模式 // ============================================ void Line(word x0,word y0,word xt,word yt,byte color) { word t; int xerr=0,yerr=0,delta_x,delta_y,distance; int incx,incy; word row,col; /* delta_x,delta_y: 坐标增量 incx,incy: 单步方向,1:单步加1;0:不变;-1:单步减1 distance: 基本增量 */ delta_x = xt-x0; // 计算坐标增量 delta_y = yt-y0; col = x0; row = y0; Lcd_Init_Draw(); if(delta_x>0) incx = 1; // 设置单步方向 else { if(delta_x==0) incx = 0; // 垂直线 else { incx = -1; delta_x = -delta_x; } } if(delta_y>0) incy = 1; else { if(delta_y==0) incy = 0; // 水平线 else { incy = -1; delta_y = -delta_y; } } if( delta_x > delta_y ) distance = delta_x; // 选取基本增量坐标轴 else distance = delta_y; for(t=0;t <= distance+1; t++) // 画线输出 { Point(col,row,color); // 画点 xerr += delta_x; yerr += delta_y; if( xerr > distance ) { xerr -= distance; col += incx; } if( yerr > distance ) { yerr -= distance; row += incy; } } Lcd_Init_Write(0); // 复位为8点写模式(写字) }