本帖最后由 dsoyy 于 2009-9-20 10:54 编辑
原版: 开辟2个静态数组,读取2幅图片的2个文件,存于其中,之后显示。
改版:开辟一个较大动态数组,将2幅图片接连存储于其中
问题: 可以接连存储,但是第二幅显示不正确,感觉没有从正确的地址读取出第二幅图片存储的数据。
详细说明:
开辟一个很大的动态内存(200K):
LB_Memory = (INT8U *)malloc(sizeof(INT8U) * LB_MAX_MEMORY);
连续读2个图片文件:图片1和图片2,将读取到得数据存储到LB_Memory 连续的内存空间:
Read_pic(LB_Name_Back_Pic,LB_Memory );
Read_pic(LB_head_File,LB_Memory + Read_num );
(第一个参数为图片文件名,第二个参数为图片文件存储空间首地址,Read_num为上次读取到得字节长度)
如上连续2次读取,可以将数据存储到分别以LB_Memory和LB_Memory + Read_num 地址开始的内存空间,2幅图片的存储时连续的。
之后我连续显示2幅图片,发现存储于LB_Memory + Read_num地址的图片显示不正确(没有得到我预期得到的数据)
Dis_icon(0,LB_Memory ,0 ,0, 35,127);
Dis_icon(Read_num ,LB_Memory ,0,0,480,26);
//以下为显示源码
void Dis_icon(uint32 no,INT8U *str,uint32 startx,uint32 starty,uint32 endx,uint32 endy)
{
uint32 x, y;
uint16 dat;
AMP506_WindowSet(startx,starty,endx,endy);//AMP506_WindowSet(100,0, 190, 80);
FD506_DisplayRAM_WriteEnable;
for(y = starty; y < endy; y ++)
{
for(x = startx; x < endx; x ++)
{
dat = (str[no + 1] << 8) | str[no];
TftSendDat(dat);
no ++;
no ++;
}
}
FD506_DisplayRAM_WriteDisable;
} |