之前我们讲解了如何使用RGB LCD显示点,线,面,以及矩形这些图形,还有字母等,以及可能在编写实验代码会遇到的问题,那么这一节我们就讲解如何使用IMX6UL在RGB LCD中显示图片
首先画点函数是画图函数的基础,所以首先要编写出画点函数,但是在上一节例程中已经讲解了如何编写画点函数,所以这里就不过多的赘述,将上一节的代码放在这里
inline void lcd_drawpoint(unsigned short x,unsigned short y,unsigned int color)
{
*(unsigned int*)((unsigned int)tftlcd_dev.framebuffer +
tftlcd_dev.pixsize * (tftlcd_dev.width * y+x))=color;
}
画图函数一共有两种实现方法,第一种是通过数组检索的方式,第二种便是通过指针缩索引的方式,首先我们先从数组索引的方法来开始讲解画图函数,首先找到一张图片,来确定他的分辨率,分辨率一般和LCD屏幕大小,要相同 ,如果你上传的图片分辨率大小不一样,那就可以使用相关的软件进入裁剪,例如PS

博主这里选取了一张长屏的图片,所以是宽600,高1024的形式竖着放在LCD显示屏上,那么将这张图片放到专门的图片取模软件中,目前常用的图片取模软件为Img2Lcd

界面如上,首先就是先导图片,然后之前讲解过,我们的屏幕其实是ARGB也就是支持透明通道,这里可以选择32位真彩色,也可以选择24位真彩色,因为图片的取模软件其实是不会将A这个透明通道加入进去,它的A那一位都是为0,所以取24位真彩色的大小也是可以的,在旁边设置好过后就点击上方的重新载入,然后点击保存

然后就会生成一个字模数组的.c文件,它的数组大小是[2457600],表示每一个元素都是unsigned char的形式,也就是占用一个字节(8位)的内存空间,整个数组相当于要占用2457600个unsigned char,也就是2457600字节(B),2457600字节约等于2400kb,也就是2.3MB,1kb=1024b
其次就是这个2457600是如何计算出来的,屏幕的宽度为1024,高度为600,每个像素点为32位也就是四个字节(因为是ARGB,如果是RGB就是3个字节),8位等于一个字节,1024*600*4=2457600 
· 得到了一个图片的字模大小后,那么我们就需要将如此大的字模文件传递到我们的Vscode中,这里直接将文件的名字修改一下,变成picture.h然后通过FTP的文件传输方式下。将文件传输到我们的LCD_API函数中,这样才可以通过画点函数来对图的显示进行比较

&nb

最低0.47元/天 解锁文章
1488

被折叠的 条评论
为什么被折叠?



