使用MFC画线(初学)
使用MFC在单文档上划线(初学)
MFC的画线
在Visual Studio 2019中新建MFC应用,选单个文档,去掉所有高级功能后创建
直接执行,则有
1.鼠标按下响应
(1)在类向导中
(2)代码中,在自增代码里添加语句
(3)执行代码
或
则有
2.画线
表示点(屏幕坐标点)
在MFC中有一个类表示在(CPoint),CPoint类中有x和y坐标,这两个值就是表示屏幕上的坐标,x和y坐标与电脑屏幕分辨率有关,当鼠标点击时,windows会自动捕捉坐标并放到CPoint类里,CPoint类操作系统已经帮我们做好了,我们只需要拿到这个值给他去接下来的操作就行了
(如何看类:按住Ctrl用鼠标点击它,就能进入mfc所定义的位置)
如下类所定义的
如何画线
两点之间有一条线,将起点保存下来,在终点时我们就可以做一些操作了。
如何捕捉两点鼠标按下:起点;鼠标抬起:终点
如何表示:CPoint
如何保存起点
在类里添加成员变量(可以手动鼠标添加,推荐使用类向导)。还是在view里添加成员变量,然后选添加“自定义变量”,变量名取有意义的。
如果上图访问项选的是受保护则有如下所示
然后在down上用自定义成员保存第一个点(起点)
而画画需要在平板或平纸上画,在Windows设备里也需要画布
设备上下文(Device Content,DC)
(屏幕,打印机,抽象的。
只要得到这个上下文就可以画点画线画抽象的,与底下是什么设备没有关系,这是操作系统提供给我们的功能)
画布
HDC hdc=::GetDC(m_Hwnd)
CDC cdc=getDC()
CClientDC dc(this)
一般“获取设备上下文”和“释放设备上下文”是成对使用的
就是说每次画线、画点之前先获得这个设备上下文,用完之后一定要记得释放,养成一个比较好的习惯。如果不释放有可能会造成资源被占用、内存泄漏什么的。
MoveTo():移动到什么位置,起点已经保存在括号里
紧接着这个函数
LineTo():画的线
执行后,效果是:当你的鼠标左键按下时开始滑动一直不放,直到鼠标抬起,从鼠标按下的点到抬起的点会有一条默认的黑色细线。效果如下:
总结:
这是主要讲基于单文档类型的应用程序,在屏幕上如何绘制一条线,是借助于设备上下文(设备上下文(Device Content,DC) ),还有事件的组合(鼠标的按下和抬起),时间逻辑放在那个里面。
还是比较简单的,只是和vc比起来操作繁多,总会忘点什么,或者就不操作也会忘。
使用MFC画线(初学)相关推荐
- MFC 画线,画刷,文本
CPaintDC dc(this);//只能在OnPaint函数中使用 CClientDC dc(this);//在哪里使用都可以 画直线 获得设备描述表->MoveTo -->LineT ...
- MFC画带箭头的直线
构造一个函数,是在startPoint,endPoint间画一条带箭头的线段: void CTry1View::DrawLine(POINT startPoint, POINT endPoint) { ...
- VC++ 利用MFC的CWindowDC类实现画线功能 在桌面窗口中画线 绘制彩色线条 CPen nPenStyle nWidth crColor
目录 利用MFC的CWindowDC类实现画线功能 在桌面窗口中画线 绘制彩色线条 CPen nPenStyle nWidth crColor 接上:VC++ 绘制线条 OnLButtonDown函数 ...
- VC++ 绘制线条 OnLButtonDown函数(DrawView.cpp) 利用SDK全局函数实现画线功能 利用MFC的CDC类实现画线功能 利用MFC的CClientDC类实现画线功能
目录 绘制线条 OnLButtonDown函数(DrawView.cpp) 利用SDK全局函数实现画线功能 利用MFC的CDC类实现画线功能 利用MFC的CClientDC类实现画线功能 接上:VC+ ...
- 初学画画怎么画线稿?学画线稿的方法有哪些?
本文由"学美术上美术集网校"原创,图片素材来自网络,仅供学习分享 初学画画怎么画线稿?学画线稿的方法有哪些?想必这些问题都是绘画初学者们比较伤脑筋的问题,那么到底怎样才能画好画线稿 ...
- windows应用(vc++2022)MFC基础到实战(4)-画线程序
目录 CWnd 对象 画图程序 新建MFC项目 鼠标位置成员变量 类向导增加消息处理函数 扩展画线功能 LineTo 函数 (wingdi.h) 两种常用画线方式 移动鼠标擦除和绘制线 继续扩展 CW ...
- 【MFC】实现简单画板功能,包含画点、画线、矩形、棋盘,指定棋盘大小等功能。
[MFC]实现简单画线.矩形.棋盘功能. 一.实现基础绘画功能 (一)新建工程 (二)实现画点功能 (三)实现画直线功能 (四)实现画矩形功能 (五)实现画棋盘功能 二.基础交互式示例 (一).交互式 ...
- VC/MFC动态画线(橡皮线),画圆,画椭圆,画矩形
2012年12月7日 22:42:14 今天我在csdn网站上通过学习别人的博客学习到了动态画矩形,画线的方法,这使得我对Windows的消息循环机制有了更深刻的理解.首先来总结一下我今天的收获,呵呵 ...
- MFC在两控件间画线
CPen pen(PS_DOT, 1, RGB(0, 0, 0));//创建一个画笔工具,也可用其他类型工具,如CBrush等,第一个参数线段样式,PS_DOT为点虚线,第二个参数为线宽度 //CWn ...
最新文章
- Datawhale组队学习周报(第012周)
- 动态加载laydate 失效_弹簧的失效分析与预防技术参考
- apache常用的配置指令:ServerRoot
- Linux文件权限基本配置
- 八、深入Go 编程语言接口
- 前端为什么要使用组件化的思想,通过一个实例来分析
- reids 源码 zipmap.c 压缩map的实现
- tomcat学习笔记(JDK+TOMCAT+AXIS)
- 诗与远方:无题(六十六)- 清明时节雨纷下
- java.util.Locale简介
- MATLAB工具箱下载地址
- OA+CRM+ERP
- oracle数据库plsqldev导出表、表结构的方法
- 在Windows7 系统上部署网关代理服务器
- macOS High Sierra 10.13.4 安装n2n
- 免费的chk恢复工具
- 免费Zblog站群采集管理插件工具
- final cut pro10.5 mac版支持M1芯片
- 构建产品“设计,制造,使用”的智慧互联 - Autodesk Forge概述 - 1
- Oracl中PL/SQL编程(10级学员 张帅鹏课堂总结)
热门文章
- 用Fabric构建应收账款融资系统的方法
- 2022-2028全球与中国工业缝纫机市场现状及未来发展趋势
- Huggingface Transformers简约教程(三)
- 关于Google AIY Kits,你需要知道的5个知识点!
- 2kids学汉字 android,2Kids学汉字
- java实现srt协议,的Java API的SRT字幕
- OpenCV探索之路(二十六):如何去除票据上的印章
- winform实时获取网卡网速全部源码,获取电脑上传下载速
- Windows Server 2012 R2 搭建FTP服务
- 慕课头条:拼多多海外版表现亮眼;小度配送机器人发布;土巴兔也玩儿元宇宙...