블로그 이미지
fiadot_old

칼퇴근을 위한 게임 서버 개발 방법론에 대한 심도있는 고찰 및 성찰을 위한 블로그!

Rss feed Tistory
Technical Article 2008. 1. 31. 01:39

cximage를 통한 화면 캡쳐 및 jpg 저장

당장에 급하게 써야하는데 뭐 이래저래 구현할꺼 없이
cximage만 써서 캡쳐해서 jpg로 저장하기 쪼가리 코드!!!

버젼 : vs2005 + cximage599c_full_unicode

include : .\cximage599c_full_unicode\CxImage
library :
./cximage599c_full_unicode/png/Debug/png.lib
./cximage599c_full_unicode/jpeg/Debug/jpeg.lib
./cximage599c_full_unicode/zlib/Debug/zlib.lib
./cximage599c_full_unicode/tiff/Debug/tiff.lib
./cximage599c_full_unicode/j2k/Debug/j2k.lib
./cximage599c_full_unicode/jbig/Debug/jbig.lib
./cximage599c_full_unicode/jasper/Debug/jasper.lib
./cximage599c_full_unicode/cximage/Debug/cximage.lib

HDC dstDC = ::GetDC(NULL);
 HDC srcDC = ::GetWindowDC(m_pHtmlView->GetSafeHwnd()); ///< 캡쳐할 핸들
 HDC memDC = ::CreateCompatibleDC(dstDC);

 RECT rt;
 m_pHtmlView->GetClientRect(&rt);

 HBITMAP bm = ::CreateCompatibleBitmap(dstDC, rt.right,rt.bottom);
 HBITMAP oldbm = (HBITMAP)::SelectObject(memDC, bm);
 ::BitBlt(memDC, 0, 0, rt.right,rt.bottom, srcDC, 0, 0, SRCCOPY);

 CxImage img;
 img.CreateFromHBITMAP(bm);
 img.SetJpegQuality(80);  
 img.Save(_T("test.jpg"), CXIMAGE_FORMAT_JPG);

 ::DeleteObject(SelectObject(memDC, oldbm));
 ::DeleteObject(memDC);

,
TOTAL TODAY