⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 draw.c

📁 开发环境为ADS V1.2 v0.2 加入zlg_gui代码后调试通过
💻 C
字号:
#include  "config.h"

/* 定义16标准色 */
uint16  const  COLORS_TAB[16] = {BLACK,
							     NAVY,
							     DGREEN,
							     DCYAN,
							     MAROON,
							     PURPLE,	
							     OLIVE,	
						         LGRAY,		
							     DGRAY,		
							     BLUE,		
						         GREEN,		
							     CYAN,	   
							     RED,	
							     MAGENTA,
							     YELLOW,	
							     WHITE
                               };
/*******************************************************
* 名称: DispRGB
* 功能: 显示RGB红色。第种纯色,各占80行。
* 入口参数: 无
* 出口参数: 无
*******************************************************/
void  DispRGB(void)
{  uint32  x,y;
 
   TftSetWrite(0, 0);
   
   // 填充红色
   for(y=0; y<80; y++)		
   {  for(x=0; x<240; x++)
      {  TftSendDat(0xF800); 
      }
   }
   
   // 填充绿色
   for(y=0; y<80; y++)
   {  for(x=0; x<240; x++)
      {  TftSendDat(0x07E0); 
      }
   }
   
   // 填充蓝色
   for(y=0; y<80; y++)
   {  for(x=0; x<240; x++)
      {  TftSendDat(0x001F); 
      }
   }
   
   // 填充白色
   for(y=0; y<80; y++)
   {  for(x=0; x<240; x++)
      {  TftSendDat(0xFFFF); 
      }
   }
}                               
                               

/****************************************************************************
* 名称:DelayNS()
* 功能:长软件延时
* 入口参数:dly		延时参数,值越大,延时越久
* 出口参数:无
****************************************************************************/
void  DelayNS(uint32 dly)
{  uint32  i;

   for(; dly>0; dly--) 
      for(i=0; i<10000; i++);
}


/****************************************************************************
* 名称:random()
* 功能:取随机数。
* 入口参数:seed   随机数范围(0 -- seed-1)
* 出口参数:返回值即是取得的随机数
****************************************************************************/
uint16  random(uint16 seed)
{  uint16 temp;

   temp = rand();
   temp = temp % seed;
   return(temp);
}



#define  CENTER_X	120
#define  CENTER_Y	160
/****************************************************************************
* 名称:CLineDemo()
* 功能:彩色线演示程序。以中心点为准,不断的画各种随机角度、随机长度、随机颜色画直线。
* 入口参数:无
* 出口参数:无
****************************************************************************/
void  CLineDemo(void)
{  uint32  x0, y0;
   uint32  x1, y1;
   uint16  color;   
   uint32  no;
   
   for(no=0; no<500; no++)
   {  /* 取第一个点坐标 */
      x0 = random(240);
      y0 = random(320);
      color = random(15)+1;     // 不使用黑色(背景色)
      
      /* 计算出中心对称点 */
      x1 = 2*CENTER_X - x0;
      y1 = 2*CENTER_Y - y0;
      
      GUI_Line(x0, y0, x1, y1, COLORS_TAB[color]);
      DelayNS(1);
   }

}

/****************************************************************************
* 名称:CLineDemo()
* 功能:彩色矩形演示程序。取得随机起点及长、宽,然后画填充矩形
* 入口参数:无
* 出口参数:无
****************************************************************************/
void  CRectangleDemo(void)
{  uint32  x0, y0;
   uint32  x1, y1;
   uint16  color;
   uint32  no;

   for(no=0; no<200; no++)
   {  /* 取第一个点坐标 */
      x0 = random(240);
      y0 = random(320);
      color = random(15)+1;     // 不使用黑色(背景色)
      
      /* 取第二点坐标 */
      x1 = x0 + random(150);							// 长控制在150像素以内
      y1 = y0 + random(100);							// 宽控制在100像素以内
      
      GUI_RectangleFill(x0, y0, x1, y1, COLORS_TAB[color]);
      DelayNS(2);
   }
}


/****************************************************************************
* 名称:CCircleDemo()
* 功能:彩色画填充圆演示程序。
* 入口参数:无
* 出口参数:无
****************************************************************************/
void  CCircleDemo(void)
{  uint32  x0, y0;
   uint8   radius;
   uint16  color;
   uint32  no;
  
   for(no=0; no<300; no++)
   {  /* 取第一个点坐标 */
      x0 = random(240);
      y0 = random(320);
      color = random(16);
      radius = random(50);							
      
      GUI_Circle(x0, y0, radius, COLORS_TAB[color]);
      DelayNS(1);
   }

}


/****************************************************************************
* 名称:DrawTree()
* 功能:使用图形分形学来实现一棵树的确绘画。
* 入口参数:xStart,yStart   树枝/树干的起始点位置
*           length          树枝/树干的长度
*           angle           树枝/树干的倾斜角度(弧度)
*           num             递归层次数
* 出口参数:无
****************************************************************************/
void  DrawTree( int xStart, int yStart,
                double length,
                double angle,
                int num )
{  int xEnd, yEnd;
   
   if(num == 0) return;  	// 本子树已画完
   
   xEnd = xStart + (int)(length * cos(angle));
   yEnd = yStart - (int)(length * sin(angle));	// 由于y方向相反,所以要相减

   // 画本子树的树干
   GUI_Line(xStart, yStart, xEnd, yEnd, DGREEN);

   // 画本子树的左叉树枝
   DrawTree( xEnd, yEnd, 
             length * 0.6,
             angle + 0.624,
             num - 1 );
   
   // 画本子树的中叉树枝
   DrawTree( xEnd, yEnd, 
             length * 0.85,
             angle + 0.08,
             num - 1 );
             
   // 画本子树的右叉树枝
   DrawTree( xEnd, yEnd, 
             length * 0.65,
             angle - 0.6,
             num - 1 );
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -