移植ucgui源码时, ucgui源码中LCD_COLORINDEX不能引用

2019-07-21 00:29发布

本帖最后由 guobo123 于 2015-12-29 15:08 编辑

[img]file:///C:UsersliuguoboAppDataRoamingTencentUsers695313559QQWinTempRichOle[TC134SNBVL@QB[DS@V)EL9.png[/img]

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
7条回答
guobo123
2019-07-21 17:06
我是参考别人的移植的,这个跟这个函数应该没关,我整个工程都给你吧,我发你邮箱,邮箱请说下,我的qq:695313559
void GUI_Line(u16 x0, u16 y0, u16 x1, u16 y1,u16 color)
{
        u16 x,y;
        u16 dx;// = abs(x1 - x0);
        u16 dy;// = abs(y1 - y0);

        if(y0==y1)
        {
                if(x0<=x1)
                {
                        x=x0;
                }
                else
                {
                        x=x1;
                        x1=x0;
                }
                  while(x <= x1)
                  {
                           LCD_DrawPoint1(x,y0,color);
                           x++;
                  }
                  return;
        }
        else if(y0>y1)
        {
                dy=y0-y1;
        }
        else
        {
                dy=y1-y0;
        }

        if(x0==x1)
        {
                if(y0<=y1)
                {
                        y=y0;
                }
                else
                {
                        y=y1;
                        y1=y0;
                }
                  while(y <= y1)
                  {
                           LCD_DrawPoint1(x0,y,color);
                           y++;
                  }
                  return;
        }
        else if(x0 > x1)
        {
                dx=x0-x1;
                  x = x1;
                  x1 = x0;
                  y = y1;
                  y1 = y0;
        }
        else
        {
                dx=x1-x0;
                  x = x0;
                  y = y0;
        }

        if(dx == dy)
        {
                  while(x <= x1)
                  {

                           x++;
                        if(y>y1)
                        {
                                y--;
                        }
                        else
                        {
                                   y++;
                        }
                           LCD_DrawPoint1(x,y,color);
                  }
        }
        else
        {
                LCD_DrawPoint1(x, y, color);
                  if(y < y1)
                  {
                           if(dx > dy)
                           {
                            s16 p = dy * 2 - dx;
                            s16 twoDy = 2 * dy;
                            s16 twoDyMinusDx = 2 * (dy - dx);
                            while(x < x1)
                            {
                                     x++;
                                     if(p < 0)
                                     {
                                              p += twoDy;
                                     }
                                     else
                                     {
                                              y++;
                                              p += twoDyMinusDx;
                                     }
                                     LCD_DrawPoint1(x, y,color);
                            }
                           }
                           else
                           {
                            s16 p = dx * 2 - dy;
                            s16 twoDx = 2 * dx;
                            s16 twoDxMinusDy = 2 * (dx - dy);
                            while(y < y1)
                            {
                                     y++;
                                     if(p < 0)
                                     {
                                              p += twoDx;
                                     }
                                     else
                                     {
                                              x++;
                                              p+= twoDxMinusDy;
                                     }
                                     LCD_DrawPoint1(x, y, color);
                            }
                           }
                  }
                  else
                  {
                           if(dx > dy)
                           {
                            s16 p = dy * 2 - dx;
                            s16 twoDy = 2 * dy;
                            s16 twoDyMinusDx = 2 * (dy - dx);
                            while(x < x1)
                            {
                                     x++;
                                     if(p < 0)
                                     {
                                              p += twoDy;
                                     }
                                     else
                                     {
                                              y--;
                                              p += twoDyMinusDx;
                                     }
                                     LCD_DrawPoint1(x, y,color);
                            }
                           }
                           else
                           {
                            s16 p = dx * 2 - dy;
                            s16 twoDx = 2 * dx;
                            s16 twoDxMinusDy = 2 * (dx - dy);
                            while(y1 < y)
                            {
                                     y--;
                                     if(p < 0)
                                     {
                                              p += twoDx;
                                     }
                                     else
                                     {
                                              x++;
                                              p+= twoDxMinusDy;
                                     }
                                     LCD_DrawPoint1(x, y,color);
                            }
                           }
                  }
        }
}

一周热门 更多>