BOOL 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; }
星期二, 11月 16, 2010
[MFC] CImage的簡單複製方法 (Copy CImage)
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言