vc++绘图,颜色
新建mfc应用程序,Graphic ,单文档
添加菜单项,点,直线,矩形,椭圆
建立类导向 MFC ClassWizard,为菜单项添加命令响应
添加成员变量
在CGraphicView构造函数中进行初始化
当用户点此菜单项的时候,将此变量设置为1
选择直线,将变量设置为2,矩形设置为3,椭圆设置为4
增加消息处理器,鼠标点下和抬起时的
要当鼠标按下的时候将点保存下来,先增加一个成员变量
在构造方法中给这个点初始化为0
当鼠标按下时将这个点m_ptOrigin保存到成员变量point当中
当鼠标抬起时,另外一个点有了,可以做图了,首先要有dc,要画那个图形,要根据用户的选择(已保存到成员变量当中m_nDrawType)要设置点,需要用到SetPixel
编译
构造画笔,红色的
将画笔选到设备描述表中,用selectObject
效果
绘制透明画刷,需要强制转换HBRUSH,
返回的是指针
用CBrush类中的静态方法,转化一个画刷的句柄,返回画刷指针
将画刷画刷选择到设备描述表中
插入对话框资源,可以用来改变线宽,指定画笔
设置ID,标题,字体
插入静态文本框,标题为:线宽
添加编辑框,便于用户输入自己设定的线宽
改变编辑框的ID
创建一个新的对话框的类,双击对话框,出现如下
修改类名点。击确定提示不能,实际上已经创建成功了
可以到工程目录下将 .clw 的删掉
点击view,建立,然后输入文件名,Graphic.clw
然后就可以看到对话框里有了
然后给编辑框控件关联一个成员变量,类型为UINT,无符号整形,不希望用户输入小于0的值
添加一个设置
给菜单项添加命令响应,编辑
先包含类的头文件
构造dlg对象,让对话框显示出来
运行
将用户输入的值保存到view类中,可以设定宽度,当用户点击的是ok时保存
为了获取线宽增加一个成员变量
在构造方法中初始化
当用户点确定时保存下来
宽度可以修改代替了
能保证再次回到对话框线宽仍然为23,说明先前的设置被保存了
设置线型,设置属性,ID号
添加单选按钮
分别叫实线(Group勾选上),虚线,点线
增加一个成员变量
初始化
当用户点击ok时保存线性
线性的描述中实线就是0
修改参数,让线性对应上
调试
创建颜色对话框
为这个菜单项增加命令响应
编辑代码,(为了保存这个成员变量,定义一个m_clr成员变量)
并在构造方法中进行初始化
获取颜色表并保存
运行
初始化
将颜色应用
但是回到对话框,仍然选择的是缺省的红色
将view中
做一个标记
再加一个ccforopen,组合起来,则颜色表会打开了
创建字体对话框 ID为IDM_FRONT
添加成员函数
字体设置
调试
增加一个成员变量
用来保存字体名字的成员变量
初始化
利用createfontindirect做一个初始化
Invalidate使窗口无效
窗口重现将先前的字体显示回去
运行
但是运行时会出错,所以在运行时应该释放,用句柄来判断一下
运行
增加一个示例功能
在对话框中可以显示出用户的改变
增加对话框,如果像进行操作,可以改变属性为IDC_SAMPLE
在编辑对话框时会发布一个ENCHANGE消息,这个对话框就是去捕获这个消息
在编辑框上右击
选择enchange消息,然后添加成员函数
对三个单选按钮选择bnclicked
编辑代码
在四个窗口中可以调用invalidate()函数,使其无效
在对话框上右击,添加消息响应
找到wm_paint消息,编辑现存的
在函数中完成线条的绘制,线形,线宽,颜色
选择这个画笔
先调用指针,在得到对话框的大小,而不是直接调用,否则就得到了对话框的大小
然后在做图,移动到原点,如何得到坐标,利用矩形区域rect.left+一个值,,,移动到主框靠边的位置
在示例框中看到的是一个水平的线条
运行时并没有看到线条,当移动到屏幕上时才看到线条
在屏幕输出做一个转换(也可以给rect加一个&)
运行
这里需要调用一个方法updateData(),将控件的值反映到成员变量当中
在运行
在示例中希望颜色也可以由用户改变,添加成员变量
进行初始化
在view类当中当显示对话框时,将这个颜色传递给对话框,(因为用户选择颜色之后,颜色就保存在了m_clr当中)
将对话框中的颜色也改变
运行——颜色,选择一种颜色
点击设置,这时就可以了
改变对话框以及控件的颜色第十课01:00:28
拷贝位图BitBlt(宽度,高度,位图的宽度,高度)
在窗口中显示一幅位图
插入资源,选择位图
将位图导入,可以选择所有文件
本文来自博客园,作者:Jaoany,转载请注明原文链接:https://www.cnblogs.com/fanglijiao/p/9998299.html