Chinaunix首页 | 论坛 | 博客
  • 博客访问: 156553
  • 博文数量: 31
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 360
  • 用 户 组: 普通用户
  • 注册时间: 2017-02-28 08:37
个人简介

没有绝活,怎能风骚.....

文章分类

全部博文(31)

文章存档

2017年(31)

我的朋友

分类: C/C++

2017-05-10 15:38:18

一、进行图片缩放的函数
  1. void CreateStretchImage(CImage *pImage,CImage *ResultImage,int StretchHeight,int StretchWidth)
  2. {
  3.     if (pImage->IsDIBSection())
  4.     {
  5.         //取得pImage的DC
  6.         CDC* pImageDC1 = CDC::FromHandle(pImage->GetDC());//Image因为有自己的DC,所以必须使用FromHandle取得对应的DC
  7.         CBitmap* bitmap1 = pImageDC1->GetCurrentBitmap();
  8.         BITMAP bmpInfo;
  9.         bitmap1->GetBitmap(&bmpInfo);
  10.         //建立新的CImage
  11.         ResultImage->Create(StretchWidth,StretchHeight,bmpInfo.bmBitsPixel);
  12.         CDC* ResultImageDC = CDC::FromHandle(ResultImage->GetDC());
  13.         //当Destination比较小的时候,会根据Destination DC上的Stretch Blt mode决定是否保留删除点的资讯
  14.         ResultImageDC->SetStretchBltMode(HALFTONE);//使用高品质
  15.         ::SetBrushOrgEx(ResultImageDC->m_hDC,0,0,NULL);//调整Brush的起点
  16.         //把pImage画到ResultImage上面
  17.         StretchBlt(*ResultImageDC,0,0,StretchWidth,StretchHeight,*pImageDC1,0,0,pImage->GetWidth(),pImage->GetHeight(),SRCCOPY);
  18.         pImage->ReleaseDC();
  19.         ResultImage->ReleaseDC();
  20.     }
  21. }
二、缩放函数的调用
  1. //m_srtPath 文件路径
  2. CImage wImg,sImg;
  3. wImg.Load(m_strPath); //加载图片
  4. CreateStretchImage(&wImg,&sImg,wImg.GetHeight()/3,wImg.GetWidth()/3); //图片缩小为原来的三分之一
  5. sImg.Save(m_srtPath); //将缩小的图片覆盖原图



阅读(3127) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~