1. EdgeStrip
ftWrDispCmd(BEGIN(EDGE_STRIP_A));
ftWrDispCmd(COLOR_RGB(255, 0, 0));
ftWrDispCmd(LINE_WIDTH(2 * 16));
ftWrDispCmd(VERTEX2F((PANEL_WIDTH / 2 - 70) * 16, (PANEL_HEIGHT / 2 - 100) * 16));
ftWrDispCmd(VERTEX2F((PANEL_WIDTH / 2 - 40) * 16, (PANEL_HEIGHT / 2 - 70) * 16));
ftWrDispCmd(VERTEX2F((PANEL_WIDTH / 2 + 40) * 16, (PANEL_HEIGHT / 2 - 30) * 16));
a. 开始绘制沿边上衬条(EDGE_STRIP_A),同理下衬条EDGE_STRIP_B,左衬条EDGE_STRIP_L,右衬条EDGE_STRIP_R。
b. 设置颜色为红色
c. 设置线宽
d. 设置第一个端点
e. 设置第二个端点
f. 设置第三个端点
红色即例程所画。
2. Text8x8
首先写入字符串到RAMG中:
const char textStr[] = {"It is a Text8x8 string!"};
ft8xxWrFromMem(WRITE_SOURCE_TYPE_BUF, (uint32_t)textStr, RAM_G + 60 * 60 / 2, sizeof(textStr) - 1);
一行显示字符串
ftWrDispCmd(BITMAP_HANDLE(0));
ftWrDispCmd(BITMAP_SOURCE(RAM_G + 60 * 60 / 2));
ftWrDispCmd(BITMAP_LAYOUT(TEXT8X8, 1 * (sizeof(textStr) - 1), 8 * 1));
ftWrDispCmd(BITMAP_SIZE(NEAREST, BORDER, BORDER, 8 * (sizeof(textStr) - 1), 8 * 1));
ftWrDispCmd(BEGIN(BITMAPS));
ftWrDispCmd(VERTEX2F((PANEL_WIDTH / 2 - 100) * 16, (PANEL_HEIGHT / 2 - 100) * 16));
a. BITMAP_HANDLE定义字符串的handle值
b. 字符串数据在RAMG中的位置
c. 定义LAYOUT,是数据在RAMG中的格式和布局。第一个参数为格式,第二个参数是位图的线跨,以字节(byte)为单位。TEXT8X8是L1格式,8 x 8的大小,所以这个值等于字符长度乘以1byte (L1格式表示一个像素用一个bit表示,一个字节可以表示8个像素,所以正好是8 / 8 = 1byte),第三个参数表示位图高度,以线跨为单位,字符高为8,一行显示就是8 * 1。
e. 定义位图的屏幕大小,即整个字符串在屏幕上会占用多少像素空间
f. 表示开始BITMAP显示
g. 设置显示的坐标
两行显示字符串
ftWrDispCmd(BITMAP_LAYOUT(TEXT8X8, 1 * (sizeof(textStr) - 1) / 2, 8 * 2));
ftWrDispCmd(BITMAP_SIZE(NEAREST, BORDER, BORDER, 8 * (sizeof(textStr) - 1) / 2, 8 * 2));
ftWrDispCmd(VERTEX2F((PANEL_WIDTH / 2 - 100) * 16, (PANEL_HEIGHT / 2 - 50) * 16));
a. 第二个参数变成除以2,表示线跨是原来的一半,而第三个参数变成乘以2,均是因为变成2行显示的原因。
b. 同理,屏幕上显示的像素范围也是一样
c. 显示坐标
3. TextVGA
TextVGA字符的大小为8x16,每个字是用16bit表示,低位是ASCII值,高位是颜色,只有16种颜色,下面的例子因为背景是黑色的,所以0(黑色)改变为白色。各种颜色如下图表示(图中0原本是黑色)。
同Text8x8类似,先在RAMG中写入VGA字符串
char textVGA[256 * 2];
uint16_t i;
for (i = 0; i < 256 * 2; i+=2)
{
textVGA[i] = (char)(i / 2); //Font
if ((((i + 1) / 2) % 16) == 0) //black
textVGA[i + 1] = 15;
else
textVGA[i + 1] = (char)(i / 2); //Color
}
ft8xxWrFromMem(WRITE_SOURCE_TYPE_BUF, (uint32_t)textVGA, RAM_G + 60 * 60 / 2, sizeof(textVGA));
整个256个字符分成8行显示
ftWrDispCmd(BITMAP_HANDLE(0));
ftWrDispCmd(BITMAP_SOURCE(RAM_G + 60 * 60 / 2));
ftWrDispCmd(BITMAP_LAYOUT(TEXTVGA, 1 * sizeof(textVGA) / 8, 16 * 8));
ftWrDispCmd(BITMAP_SIZE(NEAREST, BORDER, BORDER, 8 * sizeof(textVGA), 16 * 8));
ftWrDispCmd(BEGIN(BITMAPS));
ftWrDispCmd(VERTEX2F((PANEL_WIDTH / 2 - 100) * 16, (PANEL_HEIGHT / 2 - 100) * 16));
4. Bargraph
功能:渲染数据成一个长条图。在一个字节阵列里查询x坐标后,如果字节的值小于y,会给出一个非透明像素。否则,给出一个透明的像素。这个结果是一个位图数据的长条图。使用BARGRAPH格式绘制,最大可画256x256大小的位图。
先在RAMG输入需要渲染的数据,这里写入贝塞尔曲线的数据。
uint8_t bargraphData[256];
uint16_t i;
for (i = 0; i < 256; i++)
{
bargraphData[i] = (uint8_t)((uint32_t)255 * easeOut((uint8_t)i, 255) / EASE_OUT_MAX);
}
ft8xxWrFromMem(WRITE_SOURCE_TYPE_BUF, (uint32_t)bargraphData, RAM_G + 60 * 60 / 2, sizeof(bargraphData));
显示指令如下:
ftWrDispCmd(COLOR_RGB(255, 0, 0));
ftWrDispCmd(BITMAP_HANDLE(0));
ftWrDispCmd(BITMAP_SOURCE(RAM_G + 60 * 60 / 2));
ftWrDispCmd(BITMAP_LAYOUT(BARGRAPH, 256, 1));
ftWrDispCmd(BITMAP_SIZE(NEAREST, BORDER, BORDER, 256, 256));
ftWrDispCmd(BEGIN(BITMAPS));
ftWrDispCmd(VERTEX2F((PANEL_WIDTH / 2 - 100) * 16, 0 * 16));
显示结果如下: