b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

基于C++的简洁的MFC绘图程序

电脑杂谈  发布时间:2020-02-21 06:01:01  来源:网络整理

mfc 画图板_mfc画图_洞洞板 画图

一.准备工作

1.根据老师的运行实例mfc 画图板,在建立MFC程序时使用的高级视图功能

洞洞板 画图_mfc 画图板_mfc画图

1)由于同学经常上课时,使用的都是经典的基础视图,而课程设计文档中的视图是高级视图mfc 画图板,对比运行的视图,我尝试着把程序的视图设为跟课程设计文档里面一样的

2.参考老师发的代码,分析程序所需要的类和各个文件之间的关系
    1)设计类
        自己创建一个WShape(以W开头便于和MFC的类区分)图元类,派生图元类单独创建.h和.cpp文件,便于管理,虽然切换有些麻烦,但后期修改很方面,我没有像示例程序里面那样把所有的类都放在shape文件里面
        基类是WShape
            数据成员:
                1)原点坐标(鼠标点击的点)
                *2)旋转角度(单独为文本类设计,其他图形不使用)
                3)和线以及填充有关的属性字段
            成员函数
                1)有参数的构造函数
                2)绘制图元的函数
                3)判断鼠标点击的位置是否在图形内部的函数,是否打开属性设计窗口
                4)序列化数据的函数
                5)重新设置图元的属性的函数
            注意:要在每个派生类的.h头文件里面声明该类型支持序列化,并在.cpp源文件里面指定序列化的版本
            例如:矩形类
            DECLARE_SERIAL(WRectangle)//声明类WRectangle是支持序列化
            IMPLEMENT_SERIAL(WRectangle, CObject, 1)//实现类WSquare的序列化,指定版本为1
        派生类为(http://www.jizhuomi.com/software/244.html)CDC博客
            1)正方形类Square,矩形类Rectangle,对于正方形类,除了基类WShape之外的数据成员外,有一个独立的width数据,而矩形类只是在此基础上加上一个height数据,两者的绘图原理是一样的,CDC类的pDC对象中有绘制矩形的函数
            2)圆类Circle,椭圆类Ellipse,椭圆类既有长半轴,也有短半轴,两者的绘图原理是一样的,使用CDC类的pDC对象中绘制椭圆的函数
            3)三角类Triangle,使用CDC类的pDC对象中绘制多边形的Polygon函数(图片),(https://msdn.microsoft.com/en-us/library/fxhhde73.aspx#cdc__polyline)参看微软官网上的函数用法,要把多边形的顶点放在一个坐标点数组里面,并指定多边形的顶点的个数
            4)文本Text类,采取自定义的字体来实现,旋转角度是自定义字体的一个参数
                解决方法
                    使用CreateFontIndirect(const LOGFONT* lpLogFont)函数创建斜率字体,参数lpLogFont->lfEscapement是字体的角度
                网址(http://bbs.csdn.net/topics/20746)
                    LOGFONT logfont;//创建自己的字体
                    lstrcpy((LPSTR)logfont.lfFaceName,(LPSTR)"楷体_GB2312");
                    logfont.lfWeight=700;
                    logfont.lfWidth=40;
                    logfont.lfHeight=70;
                    logfont.lfEscapement=angle;
                    //这个参数就是用来控制角度,这里是正常显示
                    logfont.lfUnderline=FALSE;
                    logfont.lfItalic=FALSE;
                    logfont.lfStrikeOut=FALSE;
                    logfont.lfCharSet=GB2312_CHARSET;
                    hFont=CreateFontIndirect(&logfont);
                    ……
                    下面就是使用该字体了,
                    hOldFont=(HFONT*)dc.SelectObject(hFont);
    2)设计对话框
        使用MFC的控件,来搭建对话框的界面,适当修改控件的ID值
        1)Combobox下拉框控件
            所用的函数
                GetCurSel()来获取鼠标焦点的值的序号,注意下拉框的sort属性,默认是true,会按照自然排序,这样和你添加内容的顺序就会不一样,可以改为false
                AddString()来向下拉框控件里面添加内容,也可以到VS2015的属性框里面的data属性里面添加,Ctrl+Enter换行
        2)Listbox列表框控件
            所用的函数
                GetCurSel()来获取鼠标焦点的值的序号
                AddString()来向列表框控件里面添加内容
        3)MFC ColorButton颜色选取控件
            所用的函数
                Getcolor()获取当前选择的颜色,类型是COLORREF,以RGB的形式储存
        4)Static Text静态文本控件
            用来制作前台界面
        5)Edit Control编辑文本控件
            用来让用户输入参数值

mfc画图_洞洞板 画图_mfc 画图板

二.开始MFC编程

根据课程设计文档里要推动的功能来一步步编程

mfc画图_mfc 画图板_洞洞板 画图

1.和对话框相关的功能

使用控件的消息映射并且相关的成员变量来推动

mfc画图_mfc 画图板_洞洞板 画图

1)初始化对话框(初始化函数)

向下拉框以及列表框里面添加内容

BOOL WAttribute::OnInitDialog()

{

CDialogEx::OnInitDialog();


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

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

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