zoukankan      html  css  js  c++  java
  • VS2008 MFC截取整个屏幕并保存为jpg格式

     1 void CMainFrame::OnSavejpg()
     2 {
     3     // TODO: 在此添加命令处理程序代码
     4     HWND hwnd = this->GetSafeHwnd();    //得到窗口句柄
     5     HDC hDC = ::GetWindowDC(hwnd);//获取DC     指定的窗口的设备环境
     6   
     7     
     8     RECT rect;     
     9     ::GetWindowRect(hwnd, &rect);//获取屏幕大小  该函数返回指定窗口的边框矩形的尺寸。该尺寸以相对于屏幕坐标左上角的屏幕坐标给出。  
    10     HDC hDCMem = ::CreateCompatibleDC(hDC);//创建兼容DC   创建一个与指定设备兼容的内存设备上下文环境(DC)。
    11                                             
    12     
    13     HBITMAP hBitMap = ::CreateCompatibleBitmap(hDC, rect.right-rect.left, rect.bottom-rect.top);//该函数创建与指定的设备环境相关的设备兼容的位图。  
    14                                                                                                 
    15     HBITMAP hOldMap = (HBITMAP)::SelectObject(hDCMem, hBitMap);//将位图选入DC,并保存返回值     
    16     
    17     ::BitBlt(hDCMem, 0, 0, rect.right-rect.left, rect.bottom-rect.top, hDC, 0, 0, SRCCOPY);//将屏幕DC的图象拷贝到内存DC中     
    18     
    19     CImage image;//须要#include <atlimage.h>    
    20     image.Attach(hBitMap);     
    21     image.Save(_T("c://aaa.jpg"));//假设文件后缀为.bmp,则保存为为bmp格式     
    22     image.Detach();     
    23     
    24     ::SelectObject(hDCMem, hOldMap);//选入上次的返回值     
    25     
    26     //释放     
    27     ::DeleteObject(hBitMap);     
    28     ::DeleteDC(hDCMem);     
    29     ::DeleteDC(hDC);  
    30 }

    运行:

  • 相关阅读:
    c++Primer再学习(1)
    c++Primer再学习练习Todo
    感悟(一)
    新目标《C++程序设计原理与实践》
    C++Primer再学习(4)
    开篇
    C++Primer再学习(3)
    C++实现的单例模式的解惑
    使用springboot缓存图片
    springboot h2 database
  • 原文地址:https://www.cnblogs.com/qiwu1314/p/8376313.html
Copyright © 2011-2022 走看看