怎么用Vitual C++画曲线图?
使用MFC(exe)设置好了对话框窗口,已知数据坐标点数组,怎么在对话框程序中绘出这些数据的曲线图?我是菜鸟,请详细点,比如用什么控件,设置哪些变量,引用哪些函数等。或者...
使用MFC(exe)设置好了对话框窗口,已知数据坐标点数组,怎么在对话框程序中绘出这些数据的曲线图?我是菜鸟,请详细点,比如用什么控件,设置哪些变量,引用哪些函数等。或者给我介绍一本书、资料什么的。
展开
2个回答
展开全部
在OnTimer 函数中每隔一定时间进行重绘。
void CDrawView::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
DrawPicture(); // 画图函数
}
void CDrawView::DrawPicture()
{
pBackDC->PatBlt(0,0,winx, winy, PATCOPY);
//画坐标轴及刻度
DrawCoordinate(pBackDC ,BLACKPEN, MainWindowLeft,MainWindowBottom - MAINHEIGHT, MainWindowLeft + MAINWIDTH, MainWindowBottom);
//标出x坐标刻度值
WriteCoordinateX(pBackDC, BLACKPEN, MainWindowLeft,MainWindowLeft + MAINWIDTH, MainWindowBottom);
//标出y坐标刻度值
WriteCoordinateY(pBackDC,BLACKPEN,MainWindowLeft,MainWindowBottom );
//输出实际宽度值
WriteMessage(pBackDC,MainWindowLeft,MainWindowBottom,MAINHEIGHT );
if ( pBackDC != NULL )
{
//画曲线图
DrawGraph(pBackDC,REDPEN,MainWindowLeft+MAINWIDTH,MainWindowBottom);
CDC *pDC = GetDC();
if (pDC != NULL)
{
//调用OnDraw()函数,将曲线图显示在屏幕中
OnDraw(pDC);
ReleaseDC(pDC);
}
}
}
void CDrawView::OnDraw(CDC* pDC)
{
CDrawDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
if (pDC != NULL)
pDC->BitBlt(0,0,winx, winy, pBackDC, 0, 0, SRCCOPY);
}
void CDrawView::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
DrawPicture(); // 画图函数
}
void CDrawView::DrawPicture()
{
pBackDC->PatBlt(0,0,winx, winy, PATCOPY);
//画坐标轴及刻度
DrawCoordinate(pBackDC ,BLACKPEN, MainWindowLeft,MainWindowBottom - MAINHEIGHT, MainWindowLeft + MAINWIDTH, MainWindowBottom);
//标出x坐标刻度值
WriteCoordinateX(pBackDC, BLACKPEN, MainWindowLeft,MainWindowLeft + MAINWIDTH, MainWindowBottom);
//标出y坐标刻度值
WriteCoordinateY(pBackDC,BLACKPEN,MainWindowLeft,MainWindowBottom );
//输出实际宽度值
WriteMessage(pBackDC,MainWindowLeft,MainWindowBottom,MAINHEIGHT );
if ( pBackDC != NULL )
{
//画曲线图
DrawGraph(pBackDC,REDPEN,MainWindowLeft+MAINWIDTH,MainWindowBottom);
CDC *pDC = GetDC();
if (pDC != NULL)
{
//调用OnDraw()函数,将曲线图显示在屏幕中
OnDraw(pDC);
ReleaseDC(pDC);
}
}
}
void CDrawView::OnDraw(CDC* pDC)
{
CDrawDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
if (pDC != NULL)
pDC->BitBlt(0,0,winx, winy, pBackDC, 0, 0, SRCCOPY);
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询