MFC中CImage的简单复制方法 (Copy CImage)

来源:互联网 发布:win10软件权限设置 编辑:程序博客网 时间:2024/05/21 12:45

bool COriViewDlg::ImageCopy(const CImage &srcImage, CImage &destImage){int i,j;//循环变量if(srcImage.IsNull())return FALSE;//源图像参数BYTE* srcPtr=(BYTE*)srcImage.GetBits();int srcBitsCount=srcImage.GetBPP();int srcWidth=srcImage.GetWidth();int srcHeight=srcImage.GetHeight();int srcPitch=srcImage.GetPitch(); //销毁原有图像if( !destImage.IsNull()){destImage.Destroy();}//创建新图像if(srcBitsCount==32)   //支持alpha通道{destImage.Create(srcWidth,srcHeight,srcBitsCount,1);}else{destImage.Create(srcWidth,srcHeight,srcBitsCount,0);}//加载调色板if(srcBitsCount<=8&&srcImage.IsIndexed())//需要调色板{RGBQUAD pal[256];int nColors=srcImage.GetMaxColorTableEntries();if(nColors>0){     srcImage.GetColorTable(0,nColors,pal);destImage.SetColorTable(0,nColors,pal);//复制调色板程序}   } //目标图像参数BYTE *destPtr=(BYTE*)destImage.GetBits();int destPitch=destImage.GetPitch();//复制图像数据for(i=0 ; i<srcHeight;i++){memcpy( destPtr+i*destPitch, srcPtr+i*srcPitch, abs(srcPitch) );} return TRUE;} 

文章出处:http://hi.baidu.com/yuxiangyunei/item/d9974213cae331ec9913d64f