VC保存當面某個區域的圖片

void ViewReportDlg::CopyScreenToBitmap() 
{ 
    CDC *cdc = this->GetDC();
    HDC wnd = cdc->GetSafeHdc();
    //CClientDC dc(this);

    CRect rect; 
    BOOL  showMsgTag;                  //是否要彈出」圖像保存成功對話框" 
    this->GetClientRect(&rect);                  //獲取畫布大小

    HBITMAP hbitmap = CreateCompatibleBitmap(wnd, rect.right-rect.left, rect. bottom-rect.top);     //建立兼容位圖

    HDC hdc = CreateCompatibleDC(wnd);      //建立兼容DC,以便將圖像保存爲不一樣的格式
    HBITMAP hOldMap = (HBITMAP)SelectObject(hdc,hbitmap); 
    //將位圖選入DC,並保存返回值 
    BitBlt(hdc,0,0,rect.right-rect.left,rect.bottom-rect.top,wnd,0,0,SRCCOPY); 

    //將屏幕DC的圖像複製到內存DC中
    CImage image;//須要 
    image.Attach(hbitmap,CImage::DIBOR_DEFAULT);

    //image.Save(_T("c:\\B.jpg"));//若是文件後綴爲.bmp,則保存爲爲bmp格式 
    //如下程序用於選擇圖片保存路徑等信息    
    // 圖像保存
    HRESULT hResult = image.Save(_T("E:\\4444.bmp"));
    if (FAILED(hResult))
        MessageBox("保存圖像文件失敗!");
    else
        MessageBox("保存圖像文件成功!");
    image.Detach();    
    ::SelectObject(hdc, hOldMap);//選入上次的返回值
    ::DeleteDC(hdc); 
}
相關文章
相關標籤/搜索