16,466
社区成员
发帖
与我相关
我的任务
分享
#define LINE_WIDHT 10
#define LINE_HEIGHT 10
CPaintDC dc(this);
CRect rect;
GetClientRect(rect);
CDC dcMem;
dcMem.CreateCompatibleDC(&dc);
ASSERT(dcMem.GetSafeHdc());
HBITMAP bitmap = ::CreateCompatibleBitmap(dcMem.GetSafeHdc(), rect.Width(), rect.Height());
ASSERT(bitmap);
HBITMAP hOldbmp = (HBITMAP)dcMem.SelectObject(bitmap);
CPoint ptCenter(rect.CenterPoint());
CPoint ptLeft(ptCenter.x - LINE_WIDHT, ptCenter.y);
CPoint ptRight(ptCenter.x + LINE_WIDHT, ptCenter.y);
CPoint ptTop(ptCenter.x, ptCenter.y - LINE_HEIGHT);
CPoint ptBottom(ptCenter.x, ptCenter.y + LINE_HEIGHT);
dcMem.FillSolidRect(0, 0, rect.Width(), rect.Height(), RGB(255, 255, 255));
dcMem.MoveTo(ptLeft);
dcMem.LineTo(ptRight);
dcMem.MoveTo(ptTop);
dcMem.LineTo(ptBottom);
dc.BitBlt(0, 0, rect.Width(), rect.Height(), &dcMem, 0, 0, SRCCOPY);
dcMem.SelectObject(hOldbmp);
DeleteObject(bitmap);
dcMem.DeleteDC();
//dc是你的原来绘制的DC,RC是画布的大小
HDC memDc=CreateCompatibleDC(dc);
if (memDc!=NULL)
{
HBITMAP bitmap=CreateCompatibleBitmap(memDc,rc.right-rc.left,rc.bottom-rc.top);
SelectObject(memDc, bitmap);
this->drawMain(memDc, rc);
BOOL b=BitBlt(dc, rc.left, rc.top, rc.right-rc.left,rc.bottom-rc.top,memDc,0,0,SRCCOPY);
DeleteObject(bitmap);
DeleteDC(memDc);
}