本帖最后由 rjx007 于 2018-2-23 15:48 编辑
想用TFTLCD显示一幅图片,看了原子等例程,觉得太复杂了,又是读SD卡,又是文件系统什么的,太难了,一下子学不会。我想从最简单的入手,因为只显示一幅简单图片,所以用软件(如Image2lcd)将图片转成点阵数组(像显示文字似的),再用一个图片显示函数显示出来,试了很多次都不成功,屏上是乱的。不知是取模不对还是函数用的不对,劳驾高手能指导一下。
下面取模对吗?图片函数如下: 又问:函数的形参 *pic 是Image2lcd生成的C文件,还是文件中的数组?如何传递这个形参呢?
//图像显示函数,适用Image2Lcd V2.9
void Picture_Draw(u16 S_x,u16 S_y,const unsigned char *pic)
{
u32 i=8,len;
u16 temp,x,y,D_x=0,D_y=0;
x=(uint16_t)((pic[2]<<8)+pic[3])-1; //获取图片的宽度
y=(uint16_t)((pic[4]<<8)+pic[5])-1; //获取图片的高度
len=2*x*y; //获取图片像素点数
while(i<(len+8)) //显示所有像素点
{
temp=(uint16_t)((pic<<8)+pic[i+1]);//image2lcd生成的是8位数组,十六位真彩 {MOD}图像生成为高8位和低8位,这儿将其转换成16位数据,
if(D_x>x) {D_x=0;D_y++;}//逐行显示
LCD_DrawFRONT_COLOR(S_x+D_x,S_y+D_y,temp); //画点,拼凑图像,调用快速画点函数
D_x++;
i=i+2;
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
先画一小块,显示函数加延时,便于观察显示位置与内容和运行变量是否吻合。
原来的帖子我的回复就是写汉字的过程,放慢速度观察一下就明白了。
一周热门 更多>