UCGUI的绘折线实验

#if 0
|     80
|             90
|  100
|                120
|         140
|
__20__40__60__80__100______________

#endif 
    const GUI_POINT M_DrawPolyLineBuf[10]= {
        {20,100},
        {40,80},
        {60,140},
        {80,90},
        {100,120},
    };
    GUI_DrawPolyLine(M_DrawPolyLineBuf,5,0,0);

主要分析分析这段代码算法

void GL_DrawLine1Ex(int x0, int y0, int x1, int y1, unsigned * pPixelCnt)
{
    int xdiff = x1 - x0;
    int ydiff = y1 - y0;
    int xdiffby2;
    int i;
    char XYSwapped = 0;
    int Dir;
    int PixelCnt = * pPixelCnt;
	int y;

//各种检查
    xdiffby2 = xdiff / 2;//为了进位
    if (ydiff < 0)
    {
        xdiffby2 = -xdiffby2;
    }
    /* Draw pixel by pixel solid*/
    if (GUI_Context.LineStyle == GUI_LS_SOLID)
    {//算法
        for (i = 0; i <= xdiff; i++)
        {
            I32 l = ((I32)ydiff) * i + xdiffby2;//-20*i+10
			if (ABS(l) < 32767)
				y = (y0 + ((int)l) / xdiff) ;//y0 + (ydiff*i+xdiffby2)/xdiff;  y0 + (-20*i+ -10)/20   0~20
			else
				y = (y0 + l / xdiff);
            if (!XYSwapped)//100,99,98,97,96,95****80
            {
                LCD_HL_DrawPixel(x0+ i , y);//LCD_DrawPixel  LCD_L0_SetPixelIndex
            } else
            {
                LCD_HL_DrawPixel(y, x0 + i);
            }
        }
        /* Draw pixel by pixel with fill style */
    } else
    {

    }
}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值