6410 Eboot 显示图片

在Eboot里面显示图片,如果要显示一些非全屏大小的图片,感觉不是很爽,所以封装了几个函数,用于显示图片,或者画图用。

屏幕大小是320*240的,这样的屏幕,画的时候在屏幕的左上角开始往右边画,画完一行,接着画下一行。要显示的图片,需要先转成对应的数组。这里使用的是bmp2c.exe软件。由于,屏幕打竖来放,即变成240*320。这样子的话,做出来的图片需要逆时针旋转90度之后,才能够转换成对应的数组。

下面的函数支持全屏或非全屏的图片或颜色显示


其中的几个关键函数如下:

// 显示图片
BOOL ShowPicture(int startX, int startY, int width, int high, const unsigned short *picture)
{
	unsigned int *pFB;
	int i,j;
	if(startX>320 || startY>240)	return FALSE;
	if(picture == NULL)	return FALSE;

	pFB = (unsigned int *)EBOOT_FRAMEBUFFER_UA_START;
	for(j=0; j<high; j++){
		for(i=0; i<width; i++){
			UpDataBitmaptmp4=(int)picture[i+j*width];
			UpDataBitmaptmp=(((UpDataBitmaptmp4>>11)<<19)|(((UpDataBitmaptmp4>>5)&0x3F)<<10)|((UpDataBitmaptmp4&0x1F)<<3)|0x0);
			*(pFB+(startY*320+startX)+j*320+i) = UpDataBitmaptmp;
		}
	}
}

// 显示颜色
BOOL ShowColor(int startX, int startY, int width, int high, const unsigned short color)
{
	unsigned int *pFB;
	int i,j;
	if(startX>320 || startY>240)	return FALSE;

	pFB = (unsigned int *)EBOOT_FRAMEBUFFER_UA_START;
	for(j=0; j<high; j++){
		for(i=0; i<width; i++){
			UpDataBitmaptmp4=(int)color;
			UpDataBitmaptmp=(((UpDataBitmaptmp4>>11)<<19)|(((UpDataBitmaptmp4>>5)&0x3F)<<10)|((UpDataBitmaptmp4&0x1F)<<3)|0x0);
			*(pFB+(startY*320+startX)+j*320+i) = UpDataBitmaptmp;
		}
	}
}

// 清屏
void ClearScreen()
{
	unsigned int *pFB;
	volatile unsigned long i=0;

	pFB = (unsigned int *)EBOOT_FRAMEBUFFER_UA_START;
	for(i=0; i<76800; i++){
		*(pFB+i)=0x00000000;
	}
}


上述函数中的参数说明:

startX  : 图片开始的X坐标(以屏幕为320*240为准)

startY  :  图片开始的Y坐标

width   : 图片的宽度(旋转后的图片宽度)

high     : 图片的高度(旋转后的图片高度)

picture : 图片对应的数组指针

color    : 颜色值。0xFFFF表示白色,0x0000表示黑色


你可能感兴趣的:(6410 Eboot 显示图片)