主题 : 如何画有填充色的圆圈 复制链接 | 浏览器收藏 | 打印
相信自己
级别: 新手上路
UID: 31129
精华: 0
发帖: 30
金钱: 150 两
威望: 30 点
综合积分: 60 分
注册时间: 2010-10-26
最后登录: 2011-11-02
楼主  发表于: 2011-05-12 08:33

 如何画有填充色的圆圈

各位大虾好:
        请问一下,有没有画有填充色的圆圈的算法,最好有代码,多谢!
牛一般的头脑,牛一般的执着。
级别: 新手上路
UID: 41319
精华: 0
发帖: 28
金钱: 140 两
威望: 28 点
综合积分: 56 分
注册时间: 2011-03-28
最后登录: 2017-02-10
1楼  发表于: 2011-07-07 15:51
/*---------------------------------------------------------------------------
功能:    画圆 并以颜色填充
        
        rad_ 是被填充的半径,<=rad
        rad_ =0 全填充, =rad-1 不填充    =rad 不画
        
        著名的bresenham画圆算法
---------------------------------------------------------------------------*/
void lcd_fill_circle(unsigned int row, unsigned int column, unsigned int rad, unsigned int color,
                     unsigned int rad_ )

{
  signed long   D;/* Decision Variable */
  unsigned long CurX;/* Current X Value */
  unsigned long  CurY;/* Current Y Value */
  
  unsigned int i = 0;
  
  for (i = rad; i > rad_; i--)
  {
  //以下开始画一个圆
  D =3 - (i << 1); //3 - (rad << 1);
  CurX = 0;
  CurY = i;//rad;
  
  while (CurX <= CurY)
  {
    Lcd_SetCursor(row + CurX, column + CurY);
    SdCmd(0x0202);
    SdData(color);

    Lcd_SetCursor(row + CurX, column - CurY);
    SdCmd(0x0202);
    SdData(color);

    Lcd_SetCursor(row - CurX, column + CurY);
    SdCmd(0x0202);
    SdData(color);

    Lcd_SetCursor(row - CurX, column - CurY);
    SdCmd(0x0202);
    SdData(color);

    Lcd_SetCursor(row + CurY, column + CurX);
    SdCmd(0x0202);
    SdData(color);

    Lcd_SetCursor(row + CurY, column - CurX);
    SdCmd(0x0202);
    SdData(color);

    Lcd_SetCursor(row - CurY, column + CurX);
    SdCmd(0x0202);
    SdData(color);

    Lcd_SetCursor(row - CurY, column - CurX);
    SdCmd(0x0202);
    SdData(color);

    if (D < 0)
    {
      D += (CurX << 2) + 6;
    }
    else
    {
      D += ((CurX - CurY) << 2) + 10;
      CurY--;
    }
    CurX++;
  }
  //

  }
}


注:这是我用stm32时写的,看一下算法还是可以的,效果还不错。将就着看吧。
级别: 新手上路
UID: 58427
精华: 0
发帖: 23
金钱: 115 两
威望: 23 点
综合积分: 46 分
注册时间: 2011-11-07
最后登录: 2012-03-27
2楼  发表于: 2011-12-31 10:59
mark下