|
例子2.1更改图片显示程序:可显示任意大小的图片(屏幕范围内的内容)
void Paint_Bmp(int x0,int y0,int h,int l,unsigned char bmp[])
{
int x,y;
U32 c;
int p = 0;
for( y = 0 ; y < l ; y++ )
{
for( x = 0 ; x < h ; x++ )
{
c = bmp[p+1] | (bmp[p]<<8) ;//图片的每个像素点由两组数据组成
if ( ( (x0+x) < SCR_XSIZE_TFT) && ( (y0+y) < SCR_YSIZE_TFT) )
{
LCD_BUFFER[y0+y][x0+x] = c ;
p = p + 2 ;
}
else //超过相框边缘的数据跳过
{
if((x0+x)==SCR_XSIZE_TFT)
{
p=p+2*(x0+h-SCR_XSIZE_TFT);
}
if((y0+y)>=SCR_YSIZE_TFT)
{
p=p+2*(y0+l-SCR_YSIZE_TFT);
}
}
}
}
}
注:
{
但是这个程序在图片过大(eg:780*545)的时候会出现错误:显示这个程序结果
void HaltDabort(void)
{
Uart_Printf("Dabort exception!!!\n");
while(1);
}
} |
|