CImage任意高度,宽度放大缩小问题?

dfghjkhdhj 2015-03-06 03:22:27
bool CTGView::ImageCopy(int32_t newx, int32_t newy, 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(newx,newy,srcBitsCount,1);
}
else
{
destImage.Create(newx,newy,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<newy;i++)
{
memcpy( destPtr+i*destPitch, srcPtr+i*srcPitch, abs(srcPitch) );
}

return TRUE;
}



求大神测试上面代码!!求指导!!
...全文
198 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
robertzh123 2015-04-01
  • 打赏
  • 举报
回复
创建图像不显示,你确认是对的吗?
robertzh123 2015-03-23
  • 打赏
  • 举报
回复
建议加入create函数创建失败的判断;

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧