本篇将演示如果在STemwin上显示图片,不过有别于系统读取SD内的JPG/PNG等后缀的图片。
图片以代码的形式存在,然后STemwin对图片进行重绘,用过汉字字库的应该知道,两者原理类似!
下面将详细讲解如何在STM32F7Discovery的LCD上显示社区的LOGO:
这里要用到STemwin的一个小工具“BMPCVT",其作用是将图片转化为数组,界面如下:
点击”file“--”open“打开社区logo图片
然后点击”Image“--"Convert to" --"Best paletee",即可生成数组,这里我把它保存为“iclogo.h”文件。
下面开始对STemwin代码进行编写。
打开昨天的hello ickey工程文件,将iclogo.h文件放入任一包含过路径的文件夹内。
在”BASIC_HELLOWorld.c"文件内包含”iclogo.h“,编译后的工程如下所示:
对位图的重绘需要用到GUI_DrawBitmap函数,该函数的原型如下:
void GUI_DrawBitmap(const GUI_BITMAP * pBM, int x, int y),
三个参数分别为图片的地址,以及绘图的起始坐标。这里我们把图片放在LCD的中心位置。
代码如下:
将程序下载进开发板后即可看到效果:
接着演示一个挺有用的函数:GUI_DrawBitmapEx
该函数作用是做图片进行放大或缩小。STM32F7的LCD的像素为480*272,在正常情况下,超过该项目的图片都将显示不全,如下所示,我们将展示一下STM32f7的显示:
此图片转化为位图后的大小为 636 * 402,超过STM32F7的显示范围.
试用次函数GUI_DrawBitmapEx(&bm1,30,0,0,0,650,650); 将该图缩放0.65倍,效果如下:
|