在CDC上绘图,将绘图保存为bmp,jpg,emf,tif,gif等

 

在CDC上绘图,将绘图保存为bmp,jpg,emf,tif,gif等常用文件格式

HBITMAP   hBitmap    NULL;
 RECT rect;
 m_bmpShow.GetWindowRect(&rect);

 // 获得活动窗体指针
 //CWnd *pTarWnd = this->GetActiveWindow();

 // 获取整个屏幕窗口指针
 CWnd *pTarWnd = this->GetDesktopWindow();

 // 获取WINDOWS窗口处于活动的窗口指针
 //CWnd *pTarWnd = this->GetForegroundWindow();

 // 获得活动窗体的设备上下文指针
 CDC  *pdc  = pTarWnd->GetWindowDC();
 //CDC   *pdc    GetDC();
    if(pdc)
 {
  //创建位图段
  BITMAPINFO   bmi;
  LPBYTE   pBits;
  ZeroMemory(&bmi,sizeof(bmi));
  CRect   rcClient;
  //GetClientRect(rcClient);
  pTarWnd->GetWindowRect(&rcClient);

  bmi.bmiHeader.biSize    sizeof(BITMAPINFOHEADER);
  bmi.bmiHeader.biWidth    rcClient.Width();
  bmi.bmiHeader.biHeight    rcClient.Height();
  bmi.bmiHeader.biPlanes    1;
  bmi.bmiHeader.biBitCount    24;
  bmi.bmiHeader.biCompression    BI_RGB;
  hBitmap      CreateDIBSection(   pdc->m_hDC,&bmi,DIB_RGB_COLORS,(void   **)&pBits,0,0   );
  //创建兼容dc并选择位图段
  CDC   dcMem;
  dcMem.CreateCompatibleDC(pdc);
  dcMem.SelectObject(hBitmap);
  dcMem.BitBlt(0,0,rcClient.Width(),rcClient.Height(),   pdc,0,0,SRCCOPY);
  ReleaseDC(   pdc   );
 }
 if( hBitmap )
 {
  CImage   img;
  img.Attach(hBitmap);
  img.Save(_T("f:\\1.bmp"));

  img.Save(_T("f:\\1.jpg"));

  //其它图片格式同理
  DeleteObject(hBitmap);
  AfxMessageBox(_T("OK!!"));
 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值