Cimage图像拷贝

  1. bool COriViewDlg::ImageCopy(const CImage &srcImage, CImage &destImage)  
  2. {  
  3.     int i,j;//循环变量  
  4.     if(srcImage.IsNull())  
  5.         return FALSE;  
  6.     //源图像参数  
  7.     BYTE* srcPtr=(BYTE*)srcImage.GetBits();  
  8.     int srcBitsCount=srcImage.GetBPP();  
  9.     int srcWidth=srcImage.GetWidth();  
  10.     int srcHeight=srcImage.GetHeight();  
  11.     int srcPitch=srcImage.GetPitch();   
  12.     //销毁原有图像  
  13.     if( !destImage.IsNull())  
  14.     {  
  15.         destImage.Destroy();  
  16.     }  
  17.     //创建新图像  
  18.     if(srcBitsCount==32)   //支持alpha通道  
  19.     {  
  20.         destImage.Create(srcWidth,srcHeight,srcBitsCount,1);  
  21.     }  
  22.     else  
  23.     {  
  24.         destImage.Create(srcWidth,srcHeight,srcBitsCount,0);  
  25.     }  
  26.     //加载调色板  
  27.     if(srcBitsCount<=8&&srcImage.IsIndexed())//需要调色板  
  28.     {  
  29.         RGBQUAD pal[256];  
  30.         int nColors=srcImage.GetMaxColorTableEntries();  
  31.         if(nColors>0)  
  32.         {       
  33.             srcImage.GetColorTable(0,nColors,pal);  
  34.             destImage.SetColorTable(0,nColors,pal);//复制调色板程序  
  35.         }     
  36.     }   
  37.     //目标图像参数  
  38.     BYTE *destPtr=(BYTE*)destImage.GetBits();  
  39.     int destPitch=destImage.GetPitch();  
  40.     //复制图像数据  
  41.     for(i=0 ; i<srcHeight;i++)  
  42.     {  
  43.         memcpy( destPtr+i*destPitch, srcPtr+i*srcPitch, abs(srcPitch) );  
  44.     }   
  45.   
  46.     return TRUE;  
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值