野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8489|回复: 2

画线程序多画了一个像素,需要减一,用放大镜看到的

[复制链接]
发表于 2017-7-4 16:24:11 | 显示全部楼层 |阅读模式
/**
* @brief  在 ILI9341 显示器上使用 Bresenham 算法画线段
* @param  usX1 :在特定扫描方向下线段的一个端点X坐标
* @param  usY1 :在特定扫描方向下线段的一个端点Y坐标
* @param  usX2 :在特定扫描方向下线段的另一个端点X坐标
* @param  usY2 :在特定扫描方向下线段的另一个端点Y坐标
* @note 可使用LCD_SetBackColor、LCD_SetTextColor、LCD_SetColors函数设置颜色
* @retval 无
*/
void ILI9341_DrawLine ( uint16_t usX1, uint16_t usY1, uint16_t usX2, uint16_t usY2 )
{
    uint16_t us;
    uint16_t usX_Current, usY_Current;
   
    int32_t lError_X = 0, lError_Y = 0, lDelta_X, lDelta_Y, lDistance;
    int32_t lIncrease_X, lIncrease_Y;     
   
   
    lDelta_X = usX2 - usX1;     // 计算坐标增量
    lDelta_Y = usY2 - usY1;
   
    usX_Current = usX1;
    usY_Current = usY1;
   
   
    if ( lDelta_X > 0 )
        lIncrease_X = 1;        // 设置单步方向
   
    else if ( lDelta_X == 0 )
        lIncrease_X = 0;        // 垂直线
   
    else
    {
        lIncrease_X = -1;
        lDelta_X = - lDelta_X;
    }

   
    if ( lDelta_Y > 0 )
        lIncrease_Y = 1;
   
    else if ( lDelta_Y == 0 )
        lIncrease_Y = 0;        // 水平线
   
    else
    {
        lIncrease_Y = -1;
        lDelta_Y = - lDelta_Y;
    }

   
    if (  lDelta_X > lDelta_Y )
        lDistance = lDelta_X;   // 选取基本增量坐标轴
   
    else
        lDistance = lDelta_Y;

   
    for ( us = 0; us <= lDistance + 1; us ++ )              // 画线输出
    {  
        ILI9341_SetPointPixel ( usX_Current, usY_Current ); // 画点
        
        lError_X += lDelta_X;
        lError_Y += lDelta_Y;
        
        if ( lError_X > lDistance )
        {
            lError_X -= lDistance;
            usX_Current += lIncrease_X;
        }
        
        if ( lError_Y > lDistance )
        {
            lError_Y -= lDistance;
            usY_Current += lIncrease_Y;
        }
    }
}

其中:   
        lError_X += lDelta_X;
        lError_Y += lDelta_Y;
改为:
        lError_X += lDelta_X - 1;
        lError_Y += lDelta_Y - 1;
就对了,如果不减1,会多画一个像素,用放大镜看到的
话说这个驱动是火大神自己写的吗?写的是真好
回复

使用道具 举报

发表于 2017-7-4 16:33:04 | 显示全部楼层
研究得这么仔细,还用放大镜
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-4 16:34:43 | 显示全部楼层
flyleaf 发表于 2017-7-4 16:33
研究得这么仔细,还用放大镜

没办法,处女座的,有强迫症
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-4-28 10:00 , Processed in 0.056488 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表