关于tft彩屏显示图片的问题
用彩屏显示图片,图片大小取模24*32时,字模为const unsigned char code gImage_picture={...};
显示函数为
void picture_play(uint16 xStart,uint16 xEnd,uint16 yStart,uint16 yEnd)
{
uint16 m;
cs=0;
TFT_SetRamAddr(xStart,xEnd-1,yStart,yEnd-1);
rs=1;
for(m=0;m<(1680/2);m++)
{
WriteDat(gImage_picture);
WriteDat(gImage_picture);
}
cs=1;
}
主函数中
picture_play(24,48,24,60);
能正常显示图片。
而改成36*48时,
字模为const unsigned char code gImage_picture ={...};
显示函数
void picture_play(uint16 xStart,uint16 xEnd,uint16 yStart,uint16 yEnd)
{
uint16 m;
cs=0;
TFT_SetRamAddr(xStart,xEnd-1,yStart,yEnd-1);
rs=1;
for(m=0;m<(3072/2);m++)
{
WriteDat(gImage_picture);
WriteDat(gImage_picture);
}
cs=1;
}
主函数中同样扫描
picture_play(24,60,24,72);
显示的图片就变成乱码。
为什么会这样,求指导
PCB打样找华强 http://www.hqpcb.com 样板2天出货 36不是8的倍数吧?{:curse:}需要8的倍数才行 liuchangyin 发表于 2012-11-12 22:52 static/image/common/back.gif
36不是8的倍数吧?需要8的倍数才行
可48*56也不行啊。。 128*160也不行啊。。{:dizzy:} 楼主的图片大小与数组大小是个什么关系?
24*32=768
1680/768=2.1875
36*48=1728
3072/1728=1.7777...
这两个比例都不对呀,一个像素点占几个字节? lcw_swust 发表于 2012-11-13 09:18 static/image/common/back.gif
楼主的图片大小与数组大小是个什么关系?
24*32=768
1680/768=2.1875
不怎么清楚。。刚学。显示图片那函数是有个例程里这样写的,然后那个数组是用imageLcd取的。。 ch4n9 发表于 2012-11-13 10:41 static/image/common/back.gif
不怎么清楚。。刚学。显示图片那函数是有个例程里这样写的,然后那个数组是用imageLcd取的。。 ...
这两个程序都是有问题的:
1.看样子,一个像素两字节,picture=24*35*2,图片大小应是24*35,不是24*32,
picture_play(24,48,24,60);应为:picture_play(24,24+24,24,24+35);
2.picture =32*48*2(或其它组合),图片大小应是32*48(或其它乘积相同的组合),不是36*48,
楼主将程序改为picture_play(24,24+32,24,24+48);试试看
lcw_swust 发表于 2012-11-13 10:52 static/image/common/back.gif
这两个程序都是有问题的:
1.看样子,一个像素两字节,picture=24*35*2,图片大小应是24*35,不是2 ...
可以了。是不是取模后都要自己调整的?好像没有一个取模后的大小是对应我取模时设定的大小的 ch4n9 发表于 2012-11-13 11:25 static/image/common/back.gif
可以了。是不是取模后都要自己调整的?好像没有一个取模后的大小是对应我取模时设定的大小的 ...
注意看“帮助”里的“用法说明”里的“图像头数据结构” lcw_swust 发表于 2012-11-13 11:32 static/image/common/back.gif
注意看“帮助”里的“用法说明”里的“图像头数据结构”
可以了,会用了。非常感谢。
页:
[1]