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


    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

    本博客所有博文,若无专门说明皆为原创,转载请注明作者和出处!
  • 相关阅读:
    数据库函数
    数据库查询习题整理(二)
    数据库查询习题整理(一)
    1202数据库查询
    1201新课程TSQL语句
    1123项目第五天
    1121项目第四天
    1120项目第三天
    14
    にちかん
  • 原文地址:https://www.cnblogs.com/ifinver/p/2828697.html
Copyright © 2020-2023  润新知