利用MFC绘制直方图与饼图.docxVIP

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验3 编写一个程序绘制直方图和饼图 0908140707 电信091 祝天宇一、实验设计要求:该程序的主要功能是同时用直方图和饼图显示某一高校的博士研究生、硕士研究生、本科生和专科生的比例分布,并用文字和不同颜色表示学生的类别。要求通过设置坐标映射模式定义饼图和直方图的逻辑坐标原点、坐标方向和单位。查看MSDN了解CDC类成员函数SetMapMode, SetWindowOrg, SetViewportOrg, SetWindowExt,SelectObject, SetViewportExt,Rectangle, Pie的调用规则,CPen和CBrush类的使用。二、程序主要功能说明:执行程序的时候直接在窗口中显示所要求的直方图和饼状图。三、程序设计思想:1.对消息的响应主要是通过消息映射MESSAGE_MAP里面的宏找到对应的处理消息的函数对消息进行处理。2.利用OnPaint函数对WM_PAINT消息进行处理,在OnPaint函数中设定相应直方图和饼图的各项参数,执行程序的时候直接在显示的窗口上绘制直方图和饼状图。四、主要函数功能说明:1.OnPaint():主要是对WM_PAINT消息的相应,在OnPaint函数中可以设定直方图和饼状图的各项参数,包括坐标系,颜色,宽度,比例等的设计,以完成相应消息的时候直接无需其他操作直接在窗口部分显示直方图和饼状图。2.GetClientRect(LPRECT lpRect):函数主要是通过指针指向Rect设定显示窗口客户区的大小。其中lpRect是一个指向RECT类型的rectangle结构的指针。3.SetViewportOrg( int x, int y ):函数主要用于设置逻辑坐标的原点。其中X,Y是视图的初始坐标,要求其设定的坐标值必须是在设备坐标系统的范围之内。4.SetMapMode(HDC hdc, int fnMapMode):函数用于设定设备环境的映射方式,将逻辑坐标转换为设备坐标,同时制定设备坐标中X,Y的坐标轴方向。其中hdc为指向设备环境的句柄。5.MoveTo(int x,int y):函数用来实现位置的移动,移动到函数指定的x,y坐标处。6.LineTo(int X, int Y, ):函数用于划线,起点是当前位置,终点为函数指定的x,y位置。7.ZeroMemory( PVOID Destination,SIZE_T Length ):函数用于将指定的内存区域清零。其中Destination表示指定区域的开始地址,Length指定了需要清零的内存区域的大小。8.CreateFontIndirect(CONST LOGFONT *lplf):函数用来创建一种可以在后面应用中被使用的逻辑字体。9.TextOut(HDC hdc,int nXStart, int nYStart,LPCTSTR lpString,int cbString?):函数用于写字符串,同时可以使写入的字符串按照规定的字体,背景颜色和字体颜色显示。五、程序设计步骤:创建的工程类型:MFC CWnd六、核心代码说明:void CChildView::OnPaint() {float stu[4]={0.2,0.2,0.4,0.2};//人数百分比int witch=40,zbwitch=5,i=70,data[4],max=400;float rad[4];for(int t=0;t4;t++){data[t]=int(max*stu[t]);rad[t]=2*3.14f*stu[t];}CPaintDC dc(this); // device context for paintingCRect clirec;GetClientRect(clirec);dc.SetMapMode(MM_LOMETRIC);//设置映像模式dc.SetViewportOrg(0,clirec.Height()); CPoint oxy(300,300);//坐标原点//坐标轴CPen pen1(PS_SOLID,5,RGB(0,0,0)),*oldpen1;oldpen1=dc.SelectObject(pen1); dc.MoveTo(oxy);//画纵轴dc.LineTo(oxy.x+500,oxy.y);dc.LineTo(oxy.x+480,oxy.y+20);dc.MoveTo(oxy.x+500,oxy.y);dc.LineTo(oxy.x+480,oxy.y-20); dc.MoveTo(oxy);//画横轴dc.LineTo(oxy.x,oxy.y+500);dc.LineTo(oxy.x-20,oxy.y+480);dc.MoveTo(oxy.x,oxy.y+

您可能关注的文档

文档评论(0)

189****6140 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档