放到OnPaint中就行
CDC * pWndDC = GetDC();
CRect WndRect;
GetClientRect(&WndRect);
int OldState = pWndDC->SaveDC();
CFont font, *pFont;
LOGFONT lf;
//memset(&lf, 0, sizeof(LOGFONT)); //从非系统得到时,要清空
pFont = GetFont();
pFont->GetLogFont(&lf);
font.CreateFontIndirect(&lf);
CFont *pOldFont = pWndDC->SelectObject(&font);
CSize size = pWndDC->GetTextExtent(_T("Hello World"));
CDC MemDC;
MemDC.CreateCompatibleDC(pWndDC); // 创建内存DC
pWndDC->RestoreDC(OldState);
CBitmap MemBitmap;
MemBitmap.CreateCompatibleBitmap( // 创建兼容的位图
pWndDC,
WndRect.Width(),
WndRect.Height());
//BitBlt只有到位图(或其它)才能成功,SelectObject不可少
MemDC.SelectObject(MemBitmap); // 让内存DC输出到位图
// 使用MemDC画图
// 。。。。。。
MemDC.SetBkColor(RGB(200,200,0));
MemDC.SetTextColor(RGB(200,0,0));
CRect rc = CRect(0,0,80,30);
MemDC.DrawText(_T("World"),&rc, DT_CENTER);
MemDC.TextOut(0,30, _T("World MAKKKK"));
pWndDC->BitBlt( // 从内存DC复制到窗口DC
0,0,
WndRect.Width(),
WndRect.Height(),
&MemDC,
0,0,
SRCCOPY);
pWndDC->SelectObject(pOldFont);
DeleteDC(MemDC);
ReleaseDC(pWndDC);
阅读(1906) | 评论(1) | 转发(0) |