📄 draw.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 + -