新建mfc应用程序,Graphic ,单文档

添加菜单项,点,直线,矩形,椭圆

vc++绘图,颜色

建立类导向 MFC ClassWizard,为菜单项添加命令响应

vc++绘图,颜色

添加成员变量

vc++绘图,颜色

 

 在CGraphicView构造函数中进行初始化

vc++绘图,颜色

当用户点此菜单项的时候,将此变量设置为1

vc++绘图,颜色

选择直线,将变量设置为2,矩形设置为3,椭圆设置为4

vc++绘图,颜色

增加消息处理器,鼠标点下和抬起时的

vc++绘图,颜色

vc++绘图,颜色

要当鼠标按下的时候将点保存下来,先增加一个成员变量

vc++绘图,颜色vc++绘图,颜色

在构造方法中给这个点初始化为0

vc++绘图,颜色

 

 当鼠标按下时将这个点m_ptOrigin保存到成员变量point当中

vc++绘图,颜色

当鼠标抬起时,另外一个点有了,可以做图了,首先要有dc,要画那个图形,要根据用户的选择(已保存到成员变量当中m_nDrawType)要设置点,需要用到SetPixel

vc++绘图,颜色

编译

vc++绘图,颜色

构造画笔,红色的

vc++绘图,颜色

将画笔选到设备描述表中,用selectObject

vc++绘图,颜色

效果

vc++绘图,颜色

 

绘制透明画刷,需要强制转换HBRUSH,

vc++绘图,颜色

返回的是指针

用CBrush类中的静态方法,转化一个画刷的句柄,返回画刷指针


将画刷画刷选择到设备描述表中

vc++绘图,颜色

插入对话框资源,可以用来改变线宽,指定画笔

vc++绘图,颜色

设置ID,标题,字体

vc++绘图,颜色vc++绘图,颜色

插入静态文本框,标题为:线宽

vc++绘图,颜色

添加编辑框,便于用户输入自己设定的线宽

vc++绘图,颜色

改变编辑框的ID

vc++绘图,颜色

创建一个新的对话框的类,双击对话框,出现如下

vc++绘图,颜色

修改类名点。击确定提示不能,实际上已经创建成功了

vc++绘图,颜色

可以到工程目录下将 .clw 的删掉

vc++绘图,颜色

点击view,建立,然后输入文件名,Graphic.clw

vc++绘图,颜色

vc++绘图,颜色

然后就可以看到对话框里有了

vc++绘图,颜色

然后给编辑框控件关联一个成员变量,类型为UINT,无符号整形,不希望用户输入小于0的值

vc++绘图,颜色

vc++绘图,颜色

添加一个设置

vc++绘图,颜色

给菜单项添加命令响应,编辑

vc++绘图,颜色

先包含类的头文件

vc++绘图,颜色

构造dlg对象,让对话框显示出来

vc++绘图,颜色

运行

vc++绘图,颜色

将用户输入的值保存到view类中,可以设定宽度,当用户点击的是ok时保存

 

为了获取线宽增加一个成员变量

vc++绘图,颜色

vc++绘图,颜色

 

 在构造方法中初始化

vc++绘图,颜色

当用户点确定时保存下来

vc++绘图,颜色

 

宽度可以修改代替了

vc++绘图,颜色

vc++绘图,颜色

 

能保证再次回到对话框线宽仍然为23,说明先前的设置被保存了

vc++绘图,颜色

vc++绘图,颜色

设置线型,设置属性,ID号

vc++绘图,颜色

添加单选按钮

vc++绘图,颜色

分别叫实线(Group勾选上),虚线,点线

vc++绘图,颜色

 

 

vc++绘图,颜色

 

增加一个成员变量

vc++绘图,颜色

 初始化

vc++绘图,颜色

当用户点击ok时保存线性

vc++绘图,颜色

 

 线性的描述中实线就是0

修改参数,让线性对应上

vc++绘图,颜色

调试

vc++绘图,颜色

创建颜色对话框

vc++绘图,颜色

为这个菜单项增加命令响应

vc++绘图,颜色

编辑代码,(为了保存这个成员变量,定义一个m_clr成员变量)

vc++绘图,颜色

并在构造方法中进行初始化

vc++绘图,颜色

获取颜色表并保存

vc++绘图,颜色

 

 运行

vc++绘图,颜色

初始化

vc++绘图,颜色

 将颜色应用

vc++绘图,颜色

但是回到对话框,仍然选择的是缺省的红色

vc++绘图,颜色

将view中

vc++绘图,颜色

做一个标记

vc++绘图,颜色

再加一个ccforopen,组合起来,则颜色表会打开了

vc++绘图,颜色

创建字体对话框 ID为IDM_FRONT

vc++绘图,颜色

添加成员函数

vc++绘图,颜色

 字体设置

 

调试

vc++绘图,颜色

增加一个成员变量

vc++绘图,颜色

用来保存字体名字的成员变量

vc++绘图,颜色

初始化

vc++绘图,颜色

利用createfontindirect做一个初始化

vc++绘图,颜色

Invalidate使窗口无效

窗口重现将先前的字体显示回去

vc++绘图,颜色

 运行

vc++绘图,颜色

但是运行时会出错,所以在运行时应该释放,用句柄来判断一下

vc++绘图,颜色

 

运行

vc++绘图,颜色

 

 增加一个示例功能

在对话框中可以显示出用户的改变

增加对话框,如果像进行操作,可以改变属性为IDC_SAMPLE

vc++绘图,颜色

在编辑对话框时会发布一个ENCHANGE消息,这个对话框就是去捕获这个消息

在编辑框上右击

vc++绘图,颜色

选择enchange消息,然后添加成员函数

 vc++绘图,颜色

对三个单选按钮选择bnclicked

vc++绘图,颜色

编辑代码

在四个窗口中可以调用invalidate()函数,使其无效

vc++绘图,颜色

在对话框上右击,添加消息响应

vc++绘图,颜色

找到wm_paint消息,编辑现存的

vc++绘图,颜色

在函数中完成线条的绘制,线形,线宽,颜色

选择这个画笔

先调用指针,在得到对话框的大小,而不是直接调用,否则就得到了对话框的大小

vc++绘图,颜色

然后在做图,移动到原点,如何得到坐标,利用矩形区域rect.left+一个值,,,移动到主框靠边的位置

vc++绘图,颜色

 

 在示例框中看到的是一个水平的线条

 运行时并没有看到线条,当移动到屏幕上时才看到线条

vc++绘图,颜色

在屏幕输出做一个转换(也可以给rect加一个&)

vc++绘图,颜色

运行

vc++绘图,颜色

这里需要调用一个方法updateData(),将控件的值反映到成员变量当中

vc++绘图,颜色

在运行

vc++绘图,颜色

在示例中希望颜色也可以由用户改变,添加成员变量

vc++绘图,颜色

进行初始化

vc++绘图,颜色

在view类当中当显示对话框时,将这个颜色传递给对话框,(因为用户选择颜色之后,颜色就保存在了m_clr当中)

vc++绘图,颜色

将对话框中的颜色也改变

vc++绘图,颜色

 

运行——颜色,选择一种颜色

vc++绘图,颜色

点击设置,这时就可以了

vc++绘图,颜色

改变对话框以及控件的颜色第十课01:00:28

拷贝位图BitBlt(宽度,高度,位图的宽度,高度)

在窗口中显示一幅位图

 插入资源,选择位图

vc++绘图,颜色

 

 将位图导入,可以选择所有文件

vc++绘图,颜色

 

相关文章: