[mw_shl_code=c,true] while(1)
{
while(count<readlen) //¶áè¡ò»′Ø1024éèÇø (SectorsPerClust ÿ′ØéèÇøêy)
{
if(color_byte==3) //24λÑÕé«í¼
{
switch (rgb)
{
case 0:
color=bmpbuf[count]>>3; //B
break ;
case 1:
color+=((u16)bmpbuf[count]<<3)&0X07E0;//G
break;
case 2 :
color+=((u16)bmpbuf[count]<<8)&0XF800;//R
break ;
}
}
rgb++;
count++ ;
if(rgb==color_byte) //ˮƽ·½Ïò¶áè¡μ½1ÏñËØêyêy¾YoóÏÔê¾
{
if(x<picinfo.ImgWidth)
{
realx=(x*picinfo.Div_Fac)>>13;//xÖáêμ¼êÖμ
if(is_element_ok(realx,realy,1)&&yok)//·ûoÏìõ¼t
{
pic_phy.draw_point(realx+picinfo.S_XOFF,realy+picinfo.S_YOFF-1,color);//ÏÔê¾í¼Æ¬
}
}
x++;//xÖáÔö¼óò»¸öÏñËØ
color=0x00;
rgb=0;
}
countpix++;//ÏñËØàÛ¼ó
if(countpix>=rowlen)//ˮƽ·½ÏòÏñËØÖμμ½áË.»»DD
{
y--;
if(y==0)break;
realy=(y*picinfo.Div_Fac)>>13;//êμ¼êyÖμ¸Ä±ä
if(is_element_ok(realx,realy,0))yok=1;//′Ë′|2»¸Ä±äpicinfo.staticx,yμÄÖμ
else yok=0;
x=0;
countpix=0;
color=0x00;
rgb=0;
}
}
res=f_read(f_bmp,databuf,readlen,(UINT *)&br);//¶á3öreadlen¸ö×Ö½ú
if(br!=readlen)readlen=br; //×îoóò»Åúêy¾Y
if(res||br==0)break; //¶áè¡3ö′í
bmpbuf=databuf;
count=0;
} [/mw_shl_code]
对于真彩图,一个像素要三个字节分量才能显示,也就是 RGB,那应该是取完三个字节分量后画一个点,这里前面的代码也是这个意思,不过这里的 countpix 既然是统计像素个数,那应该是画一个点后值加1啊,为什么是取一个分量字节后就加一?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>