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

这篇具有很好参考价值的文章主要介绍了VC++ 利用MFC的CWindowDC类实现画线功能 在桌面窗口中画线 绘制彩色线条。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

利用MFC的CWindowDC类实现画线功能
先介绍一个MFC类:CWindowDC,这个类也派生于CDC类,并且在构造时调用GetWindowDC函数获得相应的设备描述表对象,在析构时调用ReleaseDC函数释放该设备描述对象所占用的资源。也就是说,当我们利用CWindowDC对象绘图时,也不需要显式地调用GetDC和ReleaseDC函数,该对象会自动获取和释放设备描述表资源。使用CWindowDC对象有哪些好处呢?该对象可以访问整个窗口区域,包括框架窗口的非客户区和客户区。该对象的构造与CClientDC对象相同,如果要构造一个与视类窗口相关的设备描述表,则可以利用视类对象的指针来构造这个CWindowDC对象。如下所示是利用CWindowDC对象实现画线功能的代码。

void CDrawView::OnLButtonUp(UINT nFlags, CPoint point)
{
	CWindowDC dc(this);
	dc.MoveTo(m_ptOrigin);
	dc.LineTo(point);
 
	CView::OnLButtonUp(nFlags, point);
}

编译并运行Draw程序,将会发现这段代码实现的功能与利用CClientDC类画线时没什么区别,也只能在视类窗口中画线,因为这时创建的设备描述表与视类窗口相关。

接着,把上面代码中构造设备描述表对象时使用的参数this指针换为指向视类父窗口的指针

void CDrawView::OnLButtonUp(UINT nFlags, CPoint point)
{
	CWindowDC dc(GetParent());
	dc.MoveTo(m_ptOrigin);
	dc.LineTo(point);
 
	CView::OnLButtonUp(nFlags, point);
}

编译并运行Draw程序,将会发现此时线条可以画到工具栏和菜单栏上,程序运行结果下如图所示。

在桌面窗口中画线

如果获得了一个与桌面窗口相关的设备描述表,就可以在桌面窗口中绘图。CWnd类的 GetDesktopWindow 成员函数可以获得 Windows 桌面窗口的句柄。修改构造设备描述表的代码,结果如下所示。

void CDrawView::OnLButtonUp(UINT nFlags, CPoint point)
{
	CWindowDC dc(GetDesktopWindow());
	dc.MoveTo(m_ptOrigin);
	dc.LineTo(point);
 
	CView::OnLButtonUp(nFlags, point);
}

再次 Build 并运行 Draw 程序,并拖动鼠标画线,发现这时可以在整个屏幕窗口上画线。(但是截图后不显示)

绘制彩色线条
上述各种方法实现的画线功能所绘制的都是黑色线条。这是因为在设备描述表中有一个默认的黑色画笔,因此绘制的线条都是黑色的。如果想要绘制其他颜色的线条,首先需要创建一个特定颜色的画笔,然后将此画笔选入设备描述表中,接下来绘制的线条的颜色就由这个新画笔的颜色决定了。可以利用MFC提供的类CPen来创建画笔对象。该类封装了与画笔相关的操作,它有三个构造函数。文章来源地址https://www.toymoban.com/news/detail-422802.html

到了这里,关于VC++ 利用MFC的CWindowDC类实现画线功能 在桌面窗口中画线 绘制彩色线条的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • VC6 MFC Dialog as apllication 编程

    MFC框架虽然古老,但编程还是方便多了,在操控界面控件的基础上,平时在Console模式习练的类可以融入到MFC中,开发应用程序还是比较方便的。下图是习练程序的界面。 说明: 一个EDIT框,一个Label框; 当点击 Execute钮时显示 Hello World! 一个ProgressBAR,程序把它放了一个固定位

    2024年02月07日
    浏览(27)
  • 老版MFC工程迁移到VC2019编译EXE太大的问题

    有个老版静态链接MFC库的MFC程序需要迁移到VC2019编译,直接用VC2019打开就会自动迁移过去,然后编译一下,生成的EXE大小将近3MB,老版的工程编译出来也就600多KB。 肯定哪里不对劲! 好一顿研究之后发现原来默认会把MFC控件编译进去,然后EXE体积就会变得很大了,把MFC控件关

    2024年02月14日
    浏览(32)
  • Vc - Qt - 绘制窗口背景色

    要在Qt中绘制一个背景颜色,你可以使用Qt的绘图功能来完成。下面是一种简单的方法: 步骤1:在你想要绘制背景颜色的QWidget(例如QMainWindow或QDialog)的派生类中,重写 它的paintEvent函数。 步骤2:在你的重写的paintEvent函数中,创建一个QPainter对象,并使用它来设置你想要的

    2024年02月13日
    浏览(26)
  • MFC 截图功能实现(2)

    上篇文章里面所用的截图是点击按钮就截取当前打开的界面,链接: MFC 截图功能实现_春蕾夏荷_728297725的博客-CSDN博客 这里所用的截图是可以选中区域,另存为目录等的操作: 效果: 选中区域: 菜单: 代码调用实例: #include \\\"ScreenCapture.h\\\" #include string using namespace std; void

    2024年02月11日
    浏览(27)
  • VS2015项目中,MFC内存中调用DLL函数(VC6生成的示例DLL)

    本例主要讲一下,用VC6如何生成DLL,用工具WinHex取得DLL全部内容,VC2015项目加载内存中的DLL函数,并调用函数的示例。         本例中的示例代码下载,点击可以下载 1.新建项目,这里选择Win32 Dynamic-link Library,如下图:  2.选择“A simple DLL project”,然后点击完成,如下:

    2024年02月12日
    浏览(36)
  • 基于MFC的图书馆图书管理系统 VC++操作Excel文档的方法,读取,查询,写入,修改,删除

    VS2017加装MFC以及创建第一个MFC程序_赵满刚的博客-CSDN博客 MFC读取Excel文件+数据处理+写入Excel_土豪gold的博客-CSDN博客 VS2013 MFC连接Access数据库(ADO)详细版实例操作(含Combo Box读取数据库内容,附源码)_土豪gold的博客-CSDN博客_mfc连接access数据库 MFC 导入EXCEL到数据库_weixin_338

    2024年02月06日
    浏览(34)
  • 基于MFC的图书馆图书管理系统 VC++操作Excel文档的方法,读取,查询,写入,修改,删除

    VS2017加装MFC以及创建第一个MFC程序_赵满刚的博客-CSDN博客 MFC读取Excel文件+数据处理+写入Excel_土豪gold的博客-CSDN博客 VS2013 MFC连接Access数据库(ADO)详细版实例操作(含Combo Box读取数据库内容,附源码)_土豪gold的博客-CSDN博客_mfc连接access数据库 MFC 导入EXCEL到数据库_weixin_338

    2024年02月06日
    浏览(39)
  • 红队专题-从零开始VC++C/S远程控制软件RAT-MFC-远控介绍及界面编写

    一起学习 代码审计、安全开发、web攻防、逆向等。。。 私信联系 主程序 可执行程序 服务端生成器 主机上线 服务端程序 和 服务 文件管理 CMD 进程 服务自启动 编写前 功能了解分析 界面 运行模式 主程序 主对话框 操作菜单 列表框 配置信息 多线程操作 非模式对话框 操作系

    2024年02月06日
    浏览(38)
  • 【MFC】06.MFC六大机制:窗口创建机制-笔记

    接上文【MFC】05.MFC第一大机制:程序启动机制-笔记,这一篇文章来带领大家逆向分析MFC第二大机制:窗口创建机制的源码。 我们知道,在Win32编程中,如果我们要创建一个窗口,基本步骤为: 注册窗口 创建一个窗口,必须要给一个类名称 消息处理回调函数 那么MFC的窗口创建

    2024年02月13日
    浏览(21)
  • 【MFC】06.MFC第二大机制:窗口创建机制-笔记

    接上文【MFC】05.MFC第一大机制:程序启动机制-笔记,这一篇文章来带领大家逆向分析MFC第二大机制:窗口创建机制的源码。 我们知道,在Win32编程中,如果我们要创建一个窗口,基本步骤为: 注册窗口 创建一个窗口,必须要给一个类名称 消息处理回调函数 那么MFC的窗口创建

    2024年02月14日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包