首页 > Windows开发 > 详细

[00013]-[2015-08-27]-[01]-[Windows 程序设计 ---GDI+ 截图---> BMP OR JPG OR PNG ...]

时间:2015-08-27 10:51:02      阅读:227      评论:0      收藏:0      [点我收藏+]

int GetEncoderClsid(const WCHAR* format, CLSID* pClsid)
{
UINT num = 0;
UINT size = 0;
ImageCodecInfo* pImageCodecInfo = NULL;
Gdiplus::GetImageEncodersSize(&num, &size);
if(size == 0)
{
return -1;
}

pImageCodecInfo = (ImageCodecInfo*)malloc(size);
if(pImageCodecInfo==NULL)
{
return -1;
}

Gdiplus::GetImageEncoders(num, size, pImageCodecInfo);

for(UINT i = 0; i < num; i++)
{
if(wcscmp(pImageCodecInfo[i].MimeType, format) == 0)
{
*pClsid = pImageCodecInfo[i].Clsid;
free(pImageCodecInfo);
return i;
}
}

free(pImageCodecInfo);
return -1;
}

BOOL SaveHDCToFile(HDC hDC, LPRECT lpRect)
{
BOOL bRet = FALSE;
int nWidth = lpRect->right - lpRect->left;
int nHeight = lpRect->bottom - lpRect->top;

HDC memDC = CreateCompatibleDC(hDC);
HBITMAP hBmp = CreateCompatibleBitmap(hDC, nWidth, nHeight);
SelectObject(memDC, hBmp);
BitBlt(memDC, 0, 0, nWidth, nHeight,
hDC, 0, 0, SRCCOPY);

CLSID bmpClsid;
// //L"image/bmp" L"image/jpeg" L"image/gif" L"image/tiff" L"image/png"
GetEncoderClsid(L"image/jpeg", &bmpClsid);

Gdiplus::Bitmap* pBmpSrc = Gdiplus::Bitmap::FromHBITMAP(hBmp, NULL);

if(pBmpSrc->Save(L"1.jpg", &bmpClsid) == Ok)
{
bRet = TRUE;
}

delete pBmpSrc;

SelectObject(memDC, (HBITMAP)NULL);
DeleteDC(memDC);
DeleteObject(hBmp);
return bRet;
}

 

 

void CDemo01Dlg::OnButton1()
{
// TODO: Add your control notification handler code here
HDC hDC = ::GetWindowDC(m_hWnd);
RECT rect;
::GetWindowRect(m_hWnd, &rect);
CString str;
str.Format("left=%d top=%d right=%d bottom=%d", rect.left, rect.top, rect.right, rect.bottom);
MessageBox(str);
SaveHDCToFile(hDC, &rect);
::ReleaseDC(m_hWnd, hDC);
}

 

void CDemo01Dlg::OnButton2() 
{
// TODO: Add your control notification handler code here
HDC hDC = ::GetDC(m_hWnd);
RECT rect;
::GetClientRect(m_hWnd, &rect);
CString str;
str.Format("left=%d top=%d right=%d bottom=%d", rect.left, rect.top, rect.right, rect.bottom);
MessageBox(str);
SaveHDCToFile(hDC, &rect);
::ReleaseDC(m_hWnd, hDC);
}

[00013]-[2015-08-27]-[01]-[Windows 程序设计 ---GDI+ 截图---> BMP OR JPG OR PNG ...]

原文:http://www.cnblogs.com/Auris/p/4762478.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!