Example #1
0
void LCD_Circle(u16 Xpos, u16 Ypos, u16 Radius, u16 color)
{
  	s32  Dec;
  	u32  CurX;
  	u32  CurY;
	 
  	CurX=0;
  	CurY=Radius;   
  	Dec=3-(Radius<<1);
  	while(CurX<=CurY)
  	{
		LCD_Point(Xpos+CurX,Ypos+CurY,color);
		LCD_Point(Xpos+CurX,Ypos-CurY,color);
		LCD_Point(Xpos-CurX,Ypos+CurY,color);
		LCD_Point(Xpos-CurX,Ypos-CurY,color);
		LCD_Point(Xpos+CurY,Ypos+CurX,color);
		LCD_Point(Xpos+CurY,Ypos-CurX,color);
		LCD_Point(Xpos-CurY,Ypos+CurX,color);
		LCD_Point(Xpos-CurY,Ypos-CurX,color);
		if(Dec<0)Dec+=(CurX<<2)+6;
	    else
	    {
	      	Dec+=((CurX-CurY)<<2)+10;
	      	CurY--;
	    }
	    CurX++;
  	}
}
Example #2
0
void LCD_Line(u16 x1, u16 y1, u16 x2, u16 y2, u16 color)
{
	u16 t; 
	int xerr=0,yerr=0,delta_x,delta_y,distance; 
	int incx,incy,uRow,uCol; 

	delta_x=x2-x1; //计算坐标增量 
	delta_y=y2-y1; 
	uRow=x1; 
	uCol=y1; 
	if(delta_x>0)incx=1; //设置单步方向 
	else if(delta_x==0)incx=0;//垂直线 
	else {incx=-1;delta_x=-delta_x;} 
	if(delta_y>0)incy=1; 
	else if(delta_y==0)incy=0;//水平线 
	else{incy=-1;delta_y=-delta_y;} 
	if( delta_x>delta_y)distance=delta_x; //选取基本增量坐标轴 
	else distance=delta_y; 
	for(t=0;t<=distance+1;t++ )//画线输出 
	{  
		LCD_Point(uRow,uCol,color);//画点 
		xerr+=delta_x ; 
		yerr+=delta_y ; 
		if(xerr>distance) 
		{ 
			xerr-=distance; 
			uRow+=incx; 
		} 
		if(yerr>distance) 
		{ 
			yerr-=distance; 
			uCol+=incy; 
		} 
	}  
}
Example #3
0
void LCD_DispBmp1bpp(u8 x0,u8 y0,u8 w,u8 h,u8 *pic)
{
  u8 i,j,z,c;

  for(i=y0;i<=y0+h;i++)
  {
    for(j=x0;j<=x0+w;j+=8)
    {
      c=(*pic++);
      for (z=0;z<8;z++)
        if ((c<<z)&0x80)
          LCD_Point(j+z,i,1);
        else
          LCD_Point(j+z,i,0);
    }
  }
}
Example #4
0
void LCD_Fill(u8 x0,u8 y0,u8 x1,u8 y1,u8 c)
{
  u16 i,j;

  for(i=y0;i<=y1;i++)
  {
    for(j=x0;j<=x1;j++)
    {
      LCD_Point(j,i,c);
    }
  }
}