注册 登录
编程论坛 C++教室

想做一个保存画面的功能,但是对bitblt功能不熟。请解

Lyone 发布于 2011-03-22 09:32, 552 次点击
程序代码:
    pWnd = GetDlgItem(IDC_STC);
    Rect = new CRect();
    pWnd->GetClientRect(Rect);
    pDC = pWnd->GetDC();
    RecordDC = new CDC;
    RecordDC->CreateCompatibleDC(pDC);
    RecordDC->BitBlt(Rect->left,Rect->top,Rect->right,Rect->bottom,pDC,0,0,SRCCOPY);
以上是复制按钮中的代码。
    pDC->BitBlt(Rect->left,Rect->top,Rect->right,Rect->bottom,RecordDC,0,0,SRCCOPY);
   
    OnPaint();
以上是黏贴按钮中的代码
    CDC* pDC;
    CWnd* pWnd;
    CRect* Rect;
    CDC* RecordDC;
这个是定义。
IDC_STC是窗口中的一个“框架”类型的图像

为什么实现不了保存图像的功能呢?
1 回复
#2
Lyone2011-03-22 10:38
又自己解决的。原来是少用一个俗称的画布CBitmap
程序代码:
    pWnd = GetDlgItem(IDC_STC);
    Rect = new CRect();
    pWnd->GetClientRect(Rect);
    pDC = pWnd->GetDC();
    RecordDC = new CDC;
    RecordMap = new CBitmap();
    RecordDC->CreateCompatibleDC(pDC);
    RecordMap->CreateCompatibleBitmap(pDC,Rect->right,Rect->bottom);
    pOldMap = RecordDC->SelectObject(RecordMap);
    RecordDC->BitBlt(Rect->left,Rect->top,Rect->right,Rect->bottom,pDC,0,0,SRCCOPY);
用完后再释放一下就OK了
1