19,464
社区成员
发帖
与我相关
我的任务
分享CDC *pdc=this->GetDC();
CDC MenDC;
CBitmap bm;
CRect rt;
GetClientRect(&rt);
MenDC.CreateCompatibleDC(pdc);
bm.CreateCompatibleBitmap(pdc,rt.Width(),rt.Height());
MenDC.SelectObject(&bm);
//-------------------------------------------------------------------
MenDC.FillSolidRect(0,0,rt.Width(),rt.Height(),RGB(255,255,255));
xn = x0*zm + xmod;
yn = y0*zm + ymod;
xn1 = x01*zm + xmod;
yn1 = y01*zm + ymod;
MenDC.MoveTo( xn, yn);
MenDC.LineTo(xn1,yn1);
//-------------------------------------------------------------------
pdc->BitBlt(0,0,rt.Width(),rt.Height(),&MenDC,0,0,SRCCOPY);
MenDC.DeleteDC();
bm.DeleteObject();
ReleaseDC(pdc);xn = x0*zm + xmod;
yn = y0*zm + ymod;
xn1 = x01*zm + xmod;
yn1 = y01*zm + ymod;
pDC.MoveTo( xn, yn);
pDC.LineTo(xn1,yn1);
void CZoomView::OnPaint()
{
CPaintDC dc(this); // device context for painting
OnPrepareDC(&dc);
SetMapMode(&dc);
//////////////////////////////////////////////////////////////////////////
// Set the same viewport origin, because our bitmap (use for flicker-free)
// is created for drawing area only.
CPoint viewportOrg = dc.GetViewportOrg();
m_pdcMemory->SetViewportOrg(viewportOrg);
//////////////////////////////////////////////////////////////////////////
CBitmap* pOldBitmap = m_pdcMemory->SelectObject(m_pBitmap);
CRect rectUpdate(0,0,0,0);
dc.GetClipBox(&rectUpdate);
rectUpdate.InflateRect(1,1,1,1);
m_pdcMemory->SelectClipRgn(NULL);
m_pdcMemory->IntersectClipRect(&rectUpdate);
CBrush backgroundBrush((COLORREF) ::GetSysColor(COLOR_WINDOW));
CBrush* pOldBrush = m_pdcMemory->SelectObject(&backgroundBrush);
m_pdcMemory->PatBlt(rectUpdate.left,rectUpdate.top,
rectUpdate.Width(),rectUpdate.Height(),
PATCOPY);
//////////////////////////////////////////////////////////////////////////
// draw section
OnDraw(m_pdcMemory);
//////////////////////////////////////////////////////////////////////////
dc.BitBlt(rectUpdate.left,rectUpdate.top,
rectUpdate.Width(), rectUpdate.Height(),
m_pdcMemory,rectUpdate.left,rectUpdate.top,
SRCCOPY);
m_pdcMemory->SelectObject(pOldBitmap);
m_pdcMemory->SelectObject(pOldBrush);
}