EVE-9 EdgeStrip Text8x8 TextVGA Bargraph

22 篇文章 0 订阅

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));

显示结果如下:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值