16,471
社区成员
发帖
与我相关
我的任务
分享
m3_viewGraph.SetGraphyView(0, 1000, 0, 1000, 10, 5, 1);
void CGraphView::DrawGraphy(CDC *pDC, CRect rectCoord)
{
CRect rectView;
CRgn rgnTemp, rgnView;
CPen penLine, *pOldPen;
INT_PTR nCount = m_dataGraph.GetCount();
if (nCount == 0)
return;
float dbData;
int nOffsetX, nOffsetY;
int nRangX = abs(int((m_dbEndX - m_dbStartX)*m_dbResolutionX)),
nRangY = abs(int((m_dbEndY - m_dbStartY)*m_dbResolutionY));
int nCoordWith = rectCoord.Width(),
nCoordHeight = rectCoord.Height(),
nOriginX = rectCoord.left - int(m_dbStartX*nCoordWith / nRangX),
nOriginY = rectCoord.bottom + int(m_dbStartY*nCoordHeight / nRangY);
rgnTemp.CreateRectRgnIndirect(rectCoord);
pDC->SelectObject(rgnTemp);
penLine.CreatePen(PS_SOLID, 1, m_clrWave);
pOldPen = pDC->SelectObject(&penLine);
dbData = m_dataGraph.ElementAt(0);
nOffsetY = int(nCoordHeight*dbData / nRangY);
pDC->MoveTo(nOriginX, nOriginY - nOffsetY);
for (int i = 1; i<nCount; i++)
{
dbData = m_dataGraph.ElementAt(i);
nOffsetX = int(nCoordWith*(i + 1) / nRangX);
nOffsetY = int(nCoordHeight*dbData / nRangY);
pDC->LineTo(nOriginX + nOffsetX, nOriginY - nOffsetY);
}
pDC->SelectObject(pOldPen);
GetClientRect(rectView);
rgnView.CreateRectRgnIndirect(rectView);
pDC->SelectObject(rgnView);
}