初级会员

- 积分
- 94
- 金钱
- 94
- 注册时间
- 2018-9-12
- 在线时间
- 10 小时
|
5金钱
//单色图像显示
//配合软件
//输入图像数组需要数据头
//自动确定宽度高度
void lcd_draw_bmp ( u16 xpos, u16 ypos, u32 bmp_sizeof, const u8 *bmp )
{
u8 draw_x=0,draw_y=0;
u8 count_8 = 0;
u16 count = 0;
u16 color = 0;
//分解数据头的数据
Data_header.scan = bmp[count++];
Data_header.gray = bmp[count++];
Data_header.w = (unsigned short)bmp[count++]<<8;
Data_header.w |= bmp[count++];
Data_header.h = (unsigned short)bmp[count++]<<8;
Data_header.h |= bmp[count++];
printf("数组大小:%d\n最大宽度:%d\n",bmp_sizeof,Data_header.w);
//显示部分
for( ;count<bmp_sizeof;count++ )//bmp_sizeof个数组
{
for( count_8 = 0x80;count_8!=0;count_8>>=1 )//分解数组
{
if(bmp[count]&count_8)//黑白判断
color = 0x0000;
else//黑
color = 0xffff;
draw_x++;
if(draw_x == Data_header.w)//最大宽度
{
draw_x=0;
draw_y++;//显示完毕不影响
}
lcd_draw_point(xpos+draw_x, ypos+draw_y,color);//打点
}
}
}
|
最佳答案
查看完整内容[请看2#楼]
解决嘞。
因为单色图片的原因颜色用一位来表示,图片数组是字节必然有不是8的倍数的图片,没有判断所以有问题了。
|