vc 读入txt中的数据 根据数据画图 基于对话框的mfc txt中是一个5维数组,用4列做Y轴第5列做X轴
把数据读取到一个CPoint数组中去,然后用GDI绘曲线就行了。CPoint数组根据你txt文件动态分配内存,然后在你要画图的地方添加修改下面的代码:
CRect rc ;
//获得绘图控件的指针,可以是静态文本框(比如你给的图上面的Static),图片框等,用图片框比较好。IDC_PIC_CONTAINER是控件ID
CStatic *pPic = (CStatic*)GetDlgItem(IDC_PIC_CONTAINER);
pPic->GetClientRect(&rc);//获得控件客户区大小
CDC *pDC = pPic->GetDC();//获取绘图DC
int cx=rc.right;//控件宽度
int cy=rc.bottom;//控件高度
pDC->SetMapMode(MM_ISOTROPIC);//X=Y
pDC->SetWindowExt(1000,1000);//设置窗口坐标系的大小
pDC->SetViewportExt(cx,-cy);//定义输出视口,X向右,Y向上
//pDC->SetViewportOrg(cx/2,cy/2);//设置坐标原点在中心
pDC->SetViewportOrg(0,cy);//设置坐标原点在左下角
//画一条从坐标原点到右上角的直线
pDC->MoveTo(0,0);
pDC->LineTo(1000,1000);
//创建一个紫色的平滑线的画笔,用来画曲线
CPen pen(PS_SOLID, 1, RGB(255,0,255));
pDC->SelectObject(pen);
//我这里的点数组是定义死的,你可以根据txt内容动态分配内存
CPoint arryPoint[10];
srand(time(NULL));
for (int i = 0; i <10; ++i)
{
//生成随机数,画随机曲线
arryPoint[i].x = rand() % 1000 + 1;
arryPoint[i].y = rand() % 1000 + 1;
}
//画出曲线
pDC->Polyline(arryPoint, 10);
//删除画笔
pen.DeleteObject();
这样就可以了,如果你要实现窗口重绘的话,将上面的代码放在对话框的OnPaint处理函数中去即可。
实际效果截图:
紫色的是随机生成的曲线,黑色的是从原点到右上角的直线。不明白的再追问吧。