位图保存时上下颠倒?

位图读取时,一般都是

for(GLint j=0; j< pThis->m_nHeight-1; j++)
   {
	for(GLint k=0; k< pThis->m_nWidth-1; k++)
         {
                     pixels[i][j]= pf[m_nWidth*j+k]   //pf 是指向像素开始的指针
         }
     }


 

但是在保存时,应该是

	
	for(int i=0 ;i

即保存时,不能是
p[0]=BYTE(pixels[i][j]),
因为位图格式所规定的方式存贮的记录顺序是在扫描行内从左到右,扫描行间是从下到上。
否则最后保存的位图与实际位图是呈上下颠倒的关系。
另外,注意,在保存时,应该按照nByteWidth来,超过的,应该填补为0.最后正确的保存代码如下:

for(int i=0 ;im_nWidth)
				p[0]=0;
			else	
               	p[0]=BYTE(pixels[m_nHeight-i-1][j]); 
}
 
   
 
   
 
   
 
  

你可能感兴趣的:(图形图像)