网站大量收购独家精品文档,联系QQ:2885784924

读取csv文件数据内容进行图形绘制(vc++描述).doc

读取csv文件数据内容进行图形绘制(vc++描述).doc

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
读取csv文件数据内容进行图形绘制(vc描述)

读取csv文件数据内容进行图形绘制(vc++描述) 根据csv文件数据内容绘图。 csv文件内容包括:图形类型(横线,竖线,横半圆弧,竖半圆弧),长度(线长度,半圆半径)。根据csv文件中提供的数据,在dialog中绘制出相应的图形。如果要绘制的图形超出dialog的 x轴边界,则从x=0,y不变的坐标开始绘制该图形;如果超出了y轴边界,则从x不变,y=0坐标开始绘制。(编码要求:从csv文件读取的内容和操作使用链表类保持)。 例如:csv文件内容为:(假设:a:横线,b:竖线,c:横半圆,d:竖半圆) style,length a, 50 b, 50 c, 25 d, 25 首先要定义头文件: #include string #include iostream #include fstream #include stdlib.h #include vector #include stdio.h using namespace std; vectorstring str_iterator ; //to deposit the data 在初始化里也可以加上如下语句: m_fileName=d:\\recordset.csv; UpdateData(FALSE); 然后在dialog中添加一个读取文件的按钮,并添加如下代码: UpdateWindow(); str_iterator.clear(); fstream istrm; //define a I/O stream string s; int pos,i; char *store; string name; name=m_fileName; UpdateData(TRUE); store=(char *)name.c_str(); istrm.open(store,ios::in); //open the file by only-read if(!istrm) { MessageBox(Cant open file!\n); } else { while(!istrm.eof()) { istrms; i=0; int log=1; while(log) { pos = s.find(,,i); if(pos == string::npos) { //if cant find str_iterator .push_back(s.substr(i)); log=0; } else //if find the character of , str_iterator .push_back(s.substr(i,pos-i)); i = pos+1; } } str_iterator.pop_back(); istrm.close(); UpdateWindow(); //引用OnPaint() } 最后在OnPaint()里面添加如下的处理代码: UpdateWindow(); CClientDC dc(this); CPen pen(PS_SOLID,1,RGB(0,0,255)); CRect rect; GetClientRect(rect); dc.MoveTo(5,46); CPoint p; int var; char *ch; CWnd *pWnd = GetDlgItem(IDC_STATIC); CPen *pOldPen= dc.SelectObject(pen); int x=0; while (x str_iterator .size()) { ch = (char*)str_iterator [x].c_str(); var = atoi((char*)str_iterator [x+1].c_str()); switch(*ch) { case a: // draw the horizontal line { p=dc.GetCurrentPosition(); if((p.x+var) rect.right) // 判断是否越界 { dc.MoveTo(5,p.y); } p=dc.GetCurrentPosition(); dc.LineTo(p.x+var,p.y); break; } case b: // draw the vertical line { p=dc.GetCurrentPosition(); if((p.y+var) rect.bottom) // 判断是否越界 { dc.MoveTo(p.x,46); } p=dc.GetCurrentPosition(); dc.LineTo(p.x,p.y+var); break; } case c: // draw the semic

文档评论(0)

xy88118 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档