一个奇怪的问题

如果位图的高度是正的,那么位图就是上下颠倒的,于是我写了这个函数
void CRainieBitmap::FlipBitmap()
{
int iEndLine=m_bmInfoHeader.biHeight>>1;
int iEnd=m_bmInfoHeader.biHeight-1;
if(iEnd<1)
return;
int iSize=m_bmInfoHeader.biWidth*m_bmInfoHeader.biBitCount>>3;
PBYTE pBuffer=(PBYTE)malloc(iSize);

for(int iBegin=0;iBegin<=iEndLine;++iBegin,--iEnd)
{
MoveMemory(pBuffer,(PBYTE)m_pBuffer+iSize*iBegin,iSize);
MoveMemory((PBYTE)m_pBuffer+iSize*iBegin,(PBYTE)m_pBuffer+iSize*iEnd,iSize);
MoveMemory((PBYTE)m_pBuffer+iSize*iEnd,pBuffer,iSize);
}
free(pBuffer);
}

这个函数是类内部的,m_pBuffer是像素缓冲,奇怪的是当我用这个函数来翻转一些很老的24位位图时完全没有问题,可是一旦翻转的是那些很精美的新式位图时,内存就溢出了,我试了很多BMP文件,都是这个问题?为什么啊

作者: xiaoRainie   发布时间: 2011-06-08

选一些很小的bmp文件试试,

作者: xuexiaodong2009   发布时间: 2011-06-08