OnDraw

void CSFCView::OnDraw(CDC* pDC)
{
// return;
CSFCDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);

if(m_pPrgInfo==NULL)
return;

if(g_PrjMg.GetShowType()!=SHOW_EDIT)
{
CSize cz = m_sizeTotal;
cz.cx*=m_fRate;
cz.cy*=m_fRate;
SetScrollSizes(MM_TEXT, cz);
}

m_ScrollSize.cx = GetScrollPos(SB_HORZ);
m_ScrollSize.cy = GetScrollPos(SB_VERT);

CRect rt;
GetClientRect(rt);
m_ClientRect.CopyRect(rt);
CBitmap *pmb;
CDC *gdc = GetDC();
int iWidth = (float)rt.Width()/m_fRate;
int iHeight = (float)rt.Height()/m_fRate;
if( gdc==NULL || !m_Bitmap.CreateCompatibleBitmap(gdc, iWidth, iHeight))
{
return;
}

if (m_MainDC.m_hDC == NULL)
{
if(!m_MainDC.CreateCompatibleDC(gdc))
{
return;
}
}
pmb = m_MainDC.SelectObject(&m_Bitmap);
CBrush brush(RGB(255,255,255));
m_MainDC.FillRect(CRect(0, 0,iWidth, iHeight), &brush);
m_Bitmap.DeleteObject();
brush.DeleteObject();
ReleaseDC(gdc);
m_pPrgInfo->m_GraphMg.SetScrollSize(CSize((float)m_ScrollSize.cx/m_fRate, (float)m_ScrollSize.cy/m_fRate));
m_pPrgInfo->m_GraphMg.Draw(&m_MainDC);

if(m_bLDown && m_ElemType == SGT_LINE && m_pPrgInfo!=NULL)
{
m_pPrgInfo->m_GraphMg.DrawLine(&m_MainDC, m_HitPt, m_ptEnd);
}

//刷新背景色为白色
pDC->FillSolidRect(CRect(0, 0,rt.Width(), rt.Height()), RGB(255,255,255));

pDC->StretchBlt(
m_ScrollSize.cx,
m_ScrollSize.cy,
rt.Width(),
rt.Height(),
&m_MainDC,
0,
0,
iWidth,
iHeight,
SRCCOPY);

}

猜你喜欢

转载自www.cnblogs.com/ShiShouTHS/p/11563872.html