北京邮政程序设计实践mcc制图程序报告

电脑杂谈  发布时间:2020-07-05 08:13:05  来源:网络整理

mfc画图程序_mfc 画图程序_mfc画图板程序

程序设计实践设计报告主题名称: 基于MFC的简单绘图的设计和实现学生姓名: _____________________班级: _________________班级编号: ________________________学生编号: __________________日期: _________ 2014.5.17 ___________ 1. 主题概述1.1主题目的和主要内容的简要说明主题的主要内容和目的: 简单绘图软件开发平台的设计和实现: MFC开发平台中使用的主要工具: visual studio 2013.1 .2系统的主要功能和功能图形允许用户绘制点,直线,曲线,椭圆和矩形线类型. 允许用户绘制实线,虚线和点. 线宽允许用户选择所需的线宽填充. 允许用户填写矩形和椭圆形. 色框允许用户选择矩形,椭圆形,点,线和曲线的颜色. 清除画布. 清除所有用户的图形内容. 2.系统设计2.1系统总体框架2.2系统详细设计[1]模块划分图及说明绘图模块: 该模块的大多数功能都在CDrawSomethingView类中编写.

mfc画图程序_mfc 画图程序_mfc画图板程序

该模块也是该程序的关键模块之一. 它主要负责绘制一些简单的图形,例如: 直线,矩形,椭圆,任意曲线等;电线类型,线宽设置;以及画笔颜色和填充颜色您可以绘制各种颜色的线. b. 窗口模块: 这部分的大部分由编译器自动生成,仅需少量修改即可,例如: 从头开始最大化程序. C. 菜单模块: 这部分的大部分也由编译器自动生成. 它添加了一些菜单,例如绘图工具,颜色设置,线条设置等,以便用户可以执行快速操作. [2]类图和说明CAboutDlg类由编译器生成. b. CDrawSomethingView类编译器自动生成的类表1 CDrawView类描述表说明了用于选择图形的类型(直线,矩形,椭圆形等). 名称m_flag属性数据成员m_ptOld数据成员绘图的临时点(也是终点) M_ptOrigin数据成员绘图的起点m_color数据成员笔刷颜色选择m_vLineWidth指向线宽的数据成员指针m_vLineStyle数据成员线型选择(虚线,实线,虚线)OnEditColor()成员函数颜色选择OnLine()成员函数绘制一条直线OnRectangle()成员函数绘制矩形OnEllipse()成员函数绘制椭圆OnLButtonDown()成员函数鼠标按下响应函数OnLButtonUp()成员函数鼠标向上响应函数OnMouseMove()成员函数鼠标移动响应功能[3]程序流程图并描述程序的运行,选择绘制类型,请调用OnMouseMove(),在屏幕上显示的行上调用OnLButtonUp(),再次绘制鼠标左键,绘制图片,然后调用OnLButtonDown(),保存起点[4],存储结构,内存分配, 2.3关键算法分析变量分析: m_nType: 绘图类型(必须选择,如果未选择则开始绘图,弹出窗口“您尚未选择要绘制的图形”)m_cType: 绘图和填充颜色(默认,红色,绿色,蓝色和自定义设置,未选择时默认值(RGB(255,255mfc画图板程序,255))m_lType: 线型(实线类型,虚线类型,点类型已设置,未选择时默认实线类型) m_wType: 线宽(设置1,2,3,5,10,12,14,16,18,20,25,30,50,70,72公共线宽和自定义,如果未选择,默认线宽为1)m_bType: 画笔(设置了填充和透明度,未选择时默认为透明)算法1: 函数名称void CDrawSomethingView: : OnLButtonUp(UINT nFlags,CPoint point) [1]绘制特定图形的算法功能[2]算法基本思想是通过变量m_nType确定用户需要绘制的图形,并通过不同的代码进一步实现图形[3]算法空间和时间复杂度分析[4]代码逻辑void C DrawSomethingView: : OnLButtonUp(UINT nFlags,CPoint point)//绘制{// TODO: 添加消息处理程序代码和/或调用默认值m_Mouse = FALSE; if(m_nType == -1){MessageBox(_T(“您尚未选择要绘制的图形”));} CClientDC dc(this); CPen PenColor(m_Style,m_Kuan,m_color); CBrush BrushColor(m_Brush);直流电SelectObject(&PenColor); dc. SelectObject(&BrushColor); CRect rectEllipse(m_ptOrigin,point); int r =(int)sqrt((点. x-m_ptOrigin. x)*(点. x-m_ptOrigin. y)+(点. y-m_ptOrigin. y)*(点. y- m_ptOrigin. y)); //定义圆的半径CRect rect(m_ptOrigin. x-r,m_ptOrigin. y-r,m_ptOrigin. x + r,m_ptOrigin. y + r); //定义方形开关(m_nType){情况1: if(m_bType == TRUE)//矩形{dc. Rectangle(rectEllipse);}其他{dc. SelectStockObject(NULL_BRUSH);直流电Rectangle(rectEllipse);} break;情况2: if(m_bType == TRUE){dc. Ellipse(rectEllipse);}其他{dc. SelectStockObject(NULL_BRUSH); dc. Ellipse(rectEllipse);} //省略符;情况3: 直流. MoveTo(m_ptOrigin); //线性直流. LineTo(point);打破;情况5: 直流. SetPixel(point,m_color); // point} CGraph * pGraph = new CGraph(m_nType,m_ptOrigin,point); GetDocument()-> m_obArray. 添加(pGraph); CView :: OnLButtonUp(nFlags,点); }算法2: 函数名称void CDrawSomethingView: : OnMouseMove(UINT nFlags,CPoint point)[1]绘制曲线的算法功能[2]该算法的基本思想是通过连续获取由用户的鼠标移动[3]算法空间和时间复杂度分析[4]代码逻辑无效CDrawSomethingView: : OnMouseMove(UINT nFlags,CPoint point){// TODO: 添加消息处理程序代码和/或调用默认值CClientDC dc (这个); if(m_Mouse == TRUE && m_nType == 4)(CPen PenColor(m_Style,m_Kuan,m_color); dc. SelectObject(&PenColor); dc. MoveTo(m_ptOrigin); dc. LineTo(point); m_ptOrigin = point;} CView: : OnMouseMove(nFlags,point);} 2.4其他无3.程序运行结果的分析包括输入数据的来源和格式: 鼠标轨迹输出显示方法: 图形主界面: 绘图界面操作过程: 选择图形,线宽,线型,是否填充,按下鼠标绘制响应时间: 立即运行效果4.总结4.1主题的难点和要点之一: 绘制椭圆.

mfc 画图程序_mfc画图板程序_mfc画图程序

用椭圆绘制的本质是在用户用鼠标按下并抬起的两个坐标点上创建一个矩形,然后使用该函数绘制矩形的内接椭圆的关键点: 曲线图. 曲线图需要消息响应以跟随鼠标的移动,每个时刻的下降点是下一时刻的起点. 第三个关键点: 调用全色域对话框. 当用户单击相应的菜单时,将调用mfc中包含的相应对话框功能和rgb颜色功能,并将其传递给主变量. 4.2该主题的评估我的实验程序基本上完成了绘图程序的要求. 当然有很多缺点. 例如,我的程序无法绘制出完美的圆,只有较大像素的像素才需要绘制该圆. 要绘制一个完美的圆,您需要添加相应的完美圆,以使程序绘制正方形,然后获得该正方形的内切圆. 对于像素较大的像素,可以通过填充小直径的理想圆来实现,而这是无法实现的. 可以实现最小化和最大化窗口的更新和维护. 更新后mfc画图板程序,椭圆将变为正半径,以获取的矩形的对角线为半径Circle,所有其他值成为默认项. 4.3经验和经验通过这个实验,我深刻地意识到了从自然逻辑思维到计算机代码灵活性过渡的重要性. 还应注意代码的标准化. 当存在多个变量时,我们应该建立一个合适的标识符以避免混淆. 另外,在修改函数时,我还必须考虑全局,因为稍加修改可能会更改其他整个类. 5.参考文献[1]“ VC ++的深入解释”-孙鑫,2010年. 8 [2]“数据结构和STL” _——徐亚静,肖波,2010年,第9页.


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-269109-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 姬囏
        姬囏

        而且我认为现在等他们宣布再处理的方式已经过时

      • 许圉师
        许圉师

        几次讲话让人感觉水平差了点

        • 赵长卿
          赵长卿

          那么为什么我们要忍耐

      • 李振华
        李振华

        小米你为何如此diao

      热点图片
      拼命载入中...