使用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画线(初学)相关推荐

  1. MFC 画线,画刷,文本

    CPaintDC dc(this);//只能在OnPaint函数中使用 CClientDC dc(this);//在哪里使用都可以 画直线 获得设备描述表->MoveTo -->LineT ...

  2. MFC画带箭头的直线

    构造一个函数,是在startPoint,endPoint间画一条带箭头的线段: void CTry1View::DrawLine(POINT startPoint, POINT endPoint) { ...

  3. VC++ 利用MFC的CWindowDC类实现画线功能 在桌面窗口中画线 绘制彩色线条 CPen nPenStyle nWidth crColor

    目录 利用MFC的CWindowDC类实现画线功能 在桌面窗口中画线 绘制彩色线条 CPen nPenStyle nWidth crColor 接上:VC++ 绘制线条 OnLButtonDown函数 ...

  4. VC++ 绘制线条 OnLButtonDown函数(DrawView.cpp) 利用SDK全局函数实现画线功能 利用MFC的CDC类实现画线功能 利用MFC的CClientDC类实现画线功能

    目录 绘制线条 OnLButtonDown函数(DrawView.cpp) 利用SDK全局函数实现画线功能 利用MFC的CDC类实现画线功能 利用MFC的CClientDC类实现画线功能 接上:VC+ ...

  5. 初学画画怎么画线稿?学画线稿的方法有哪些?

    本文由"学美术上美术集网校"原创,图片素材来自网络,仅供学习分享 初学画画怎么画线稿?学画线稿的方法有哪些?想必这些问题都是绘画初学者们比较伤脑筋的问题,那么到底怎样才能画好画线稿 ...

  6. windows应用(vc++2022)MFC基础到实战(4)-画线程序

    目录 CWnd 对象 画图程序 新建MFC项目 鼠标位置成员变量 类向导增加消息处理函数 扩展画线功能 LineTo 函数 (wingdi.h) 两种常用画线方式 移动鼠标擦除和绘制线 继续扩展 CW ...

  7. 【MFC】实现简单画板功能,包含画点、画线、矩形、棋盘,指定棋盘大小等功能。

    [MFC]实现简单画线.矩形.棋盘功能. 一.实现基础绘画功能 (一)新建工程 (二)实现画点功能 (三)实现画直线功能 (四)实现画矩形功能 (五)实现画棋盘功能 二.基础交互式示例 (一).交互式 ...

  8. VC/MFC动态画线(橡皮线),画圆,画椭圆,画矩形

    2012年12月7日 22:42:14 今天我在csdn网站上通过学习别人的博客学习到了动态画矩形,画线的方法,这使得我对Windows的消息循环机制有了更深刻的理解.首先来总结一下我今天的收获,呵呵 ...

  9. MFC在两控件间画线

    CPen pen(PS_DOT, 1, RGB(0, 0, 0));//创建一个画笔工具,也可用其他类型工具,如CBrush等,第一个参数线段样式,PS_DOT为点虚线,第二个参数为线宽度 //CWn ...

最新文章

  1. Datawhale组队学习周报(第012周)
  2. 动态加载laydate 失效_弹簧的失效分析与预防技术参考
  3. apache常用的配置指令:ServerRoot
  4. Linux文件权限基本配置
  5. 八、深入Go 编程语言接口
  6. 前端为什么要使用组件化的思想,通过一个实例来分析
  7. reids 源码 zipmap.c 压缩map的实现
  8. tomcat学习笔记(JDK+TOMCAT+AXIS)
  9. 诗与远方:无题(六十六)- 清明时节雨纷下
  10. java.util.Locale简介
  11. MATLAB工具箱下载地址
  12. OA+CRM+ERP
  13. oracle数据库plsqldev导出表、表结构的方法
  14. 在Windows7 系统上部署网关代理服务器
  15. macOS High Sierra 10.13.4 安装n2n
  16. 免费的chk恢复工具
  17. 免费Zblog站群采集管理插件工具
  18. final cut pro10.5 mac版支持M1芯片
  19. 构建产品“设计,制造,使用”的智慧互联 - Autodesk Forge概述 - 1
  20. Oracl中PL/SQL编程(10级学员 张帅鹏课堂总结)

热门文章

  1. 用Fabric构建应收账款融资系统的方法
  2. 2022-2028全球与中国工业缝纫机市场现状及未来发展趋势
  3. Huggingface Transformers简约教程(三)
  4. 关于Google AIY Kits,你需要知道的5个知识点!
  5. 2kids学汉字 android,2Kids学汉字
  6. java实现srt协议,的Java API的SRT字幕
  7. OpenCV探索之路(二十六):如何去除票据上的印章
  8. winform实时获取网卡网速全部源码,获取电脑上传下载速
  9. Windows Server 2012 R2 搭建FTP服务
  10. 慕课头条:拼多多海外版表现亮眼;小度配送机器人发布;土巴兔也玩儿元宇宙...