把數據讀取到壹個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處理函數中去即可。
實際效果截圖:
紫色的是隨機生成的曲線,黑色的是從原點到右上角的直線。不明白的再追問吧。?