想直接在視窗顯示螢屏截圖,但如下代碼只能顯示視窗化的一部分截圖,試問各位大神怎么修改就可以顯示全屏,或者說改哪些資料就可以獲取螢屏其他部分的截圖????
我是直接建立一個基本對話框實作這段代碼,然后希望各位大神能指點一下,謝謝各位大神了,麻煩了,萬分感激!!!!
HDC m_hDC=::GetDC(NULL);
//創建關聯
HDC m_MemDC=CreateCompatibleDC(m_hDC);
//獲得X\Y
int x=GetSystemMetrics(SM_CXSCREEN);
int y=GetSystemMetrics(SM_CYSCREEN);
//創建畫布
HBITMAP MemPic=::CreateCompatibleBitmap(m_hDC,x,y);
::SelectObject(m_MemDC,MemPic);
//拷貝到記憶體
::BitBlt(m_MemDC,0,0,x,y,m_hDC,0,0,SRCCOPY);
//開始保存
HDC m_MainDC=::GetDC(m_hWnd);
::BitBlt(m_MainDC,0,0,x,y,m_MemDC,0,0,SRCCOPY);
::ReleaseDC(m_hWnd,m_MainDC);
::DeleteObject(MemPic);
::DeleteDC(m_MemDC);
::ReleaseDC(NULL,m_hDC);
uj5u.com熱心網友回復:
void CMyDlg::OnButton1()
{
HDC hDC=::GetDC(NULL);
//創建關聯
HDC MemDC=CreateCompatibleDC(hDC);
//獲得X\Y
int x=GetSystemMetrics(SM_CXSCREEN);
int y=GetSystemMetrics(SM_CYSCREEN);
//創建畫布
HBITMAP MemPic=::CreateCompatibleBitmap(hDC,x,y);
::SelectObject(MemDC,MemPic);
//拷貝到記憶體
::BitBlt(MemDC,0,0,x,y,hDC,0,0,SRCCOPY);
//開始保存
HDC MainDC=::GetDC(m_hWnd);
CRect rc;
GetClientRect(&rc);
SetStretchBltMode(MainDC,HALFTONE);
::StretchBlt(MainDC,0,0,rc.Width(),rc.Height(),MemDC,0,0,x,y,SRCCOPY);
// ::BitBlt(MainDC,0,0,x,y,MemDC,0,0,SRCCOPY);
::ReleaseDC(m_hWnd,MainDC);
::DeleteObject(MemPic);
::DeleteDC(MemDC);
::ReleaseDC(NULL,hDC);
1 不必要 的 m_ 已洗掉
2 開始保存, 使用 當前視窗 size
HDC MainDC=::GetDC(m_hWnd);
CRect rc;
GetClientRect(&rc);
SetStretchBltMode(MainDC,HALFTONE);
::StretchBlt(MainDC,0,0,rc.Width(),rc.Height(),MemDC,0,0,x,y,SRCCOPY);
// ::BitBlt(MainDC,0,0,x,y,MemDC,0,0,SRCCOPY);
uj5u.com熱心網友回復:
縮放一下再顯示就好了uj5u.com熱心網友回復:
WINAPI 拷貝指定的hDC的lpRect部分到檔案Dstfile中(BMP檔案格式)uj5u.com熱心網友回復:
HDC m_hDC=::GetDC(NULL);//創建關聯
HDC m_MemDC=CreateCompatibleDC(m_hDC);
//獲得X\Y
int x=GetSystemMetrics(SM_CXSCREEN);
int y=GetSystemMetrics(SM_CYSCREEN);
//創建畫布
HBITMAP MemPic=::CreateCompatibleBitmap(m_hDC,x,y);
::SelectObject(m_MemDC,MemPic);
//拷貝到記憶體
::BitBlt(m_MemDC,0,0,x,y,m_hDC,0,0,SRCCOPY);
//到這里,你已經將視窗資料拷貝到了m_MemDC
//開始保存
HDC m_MainDC=::GetDC(m_hWnd);
::BitBlt(m_MainDC,0,0,x,y,m_MemDC,0,0,SRCCOPY);
//你的視窗沒有辦法顯示整個位圖,超出視窗部分被裁剪了
::ReleaseDC(m_hWnd,m_MainDC);
::DeleteObject(MemPic);
::DeleteDC(m_MemDC);
::ReleaseDC(NULL,m_hDC);
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/98289.html
標籤:圖形處理/算法
