當前位置:編程學習大全網 - 源碼下載 - vc 讀入txt中的數據 根據數據畫圖 基於對話框的mfc txt中是壹個5維數組,用4列做Y軸第5列做X軸

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處理函數中去即可。

實際效果截圖:

紫色的是隨機生成的曲線,黑色的是從原點到右上角的直線。不明白的再追問吧。?

  • 上一篇:Int13源代碼
  • 下一篇:智能開關源代碼
  • copyright 2024編程學習大全網