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)
沒有留言:
張貼留言