这是我自己把源代码修改的结果
[mw_shl_code=c,true]void LCD_DrawLine(u16 x1, u16 y1, u16 x2, u16 y2, ColorTypeDef aColor)
{
u16 lPointIndex;
int lXAssit, lYAssit;
int lXDelta = x2 - x1; // 计算坐标增量
int lYDelta = y2 - y1;
int lMaxDelta = lXDelta > lYDelta ? lXDelta : lYDelta;
int lX = x1;
int lY = y1;
int lXIncrement, lYIncrement;
// 现根据情况设定 X、Y 方向上画线时的递增量
if(lXDelta > 0)
lXIncrement = 1; // 设置单步方向
else if(lXDelta == 0)
lXIncrement = 0; // 垂直线
else
{
lXIncrement = -1;
lXDelta = -lXDelta;
}
if(lYDelta > 0)
lYIncrement = 1;
else if(lYDelta == 0)
lYIncrement = 0; // 水平线
else
{
lYIncrement = -1;
lYDelta = -lYDelta;
}
lXAssit = lXDelta;
lYAssit = lYDelta;
for(lPointIndex = 1; lPointIndex <= lMaxDelta + 1; lPointIndex++)//画线输出
{
LCD_DrawPoint(lX, lY, aColor); //画点
// 计算下一个坐标点
lXAssit += lXDelta;
lYAssit += lYDelta;
if(lXAssit > lMaxDelta)
{
lXAssit -= lMaxDelta;
lX += lXIncrement;
}
if(lYAssit > lMaxDelta)
{
lYAssit -= lMaxDelta;
lY += lYIncrement;
}
}
}[/mw_shl_code]
|