孙鑫VC++第4章简单绘图

孙鑫VC++第10章绘图控制 十、绘图控制   1.        简单绘图          CClientDC dc(this);          CPen pen(PS_SOLID,1,RGB(255,0,0));        dc.SelectObject(&pen);          //透明画刷        CBrush *pBrush =CBrush::FromHandle((HBRU 阅读详情

                                     

第四章、简单绘图

 

1.      MessageBox(“Hello,MFC”);

2.      利用SDK全局函数实现画线功能

 

HDC hdc;//首先获得窗口的设备描述表

Hdc =::GetDC(m_hWnd); //m_hWnd已经存在的变量

//移动到线条的起点

MoveToEx(hdc,m_ptOrigin.x,m_ptOrigin.y,NULL);

//画线

LineTo(hdc,point.x,point.y);

 

//释放设备描述表

::ReleaseDC(m_hWnd,hdc);

 

3.CWnd类有一个成员变量m_hWnd用于保存窗口句柄,而C***View类派生于CWnd类,因此该类也有这个变量,可直接使用;

 

3.      利用MFC 的CDC类实现画线功能

 

CDC* pDC = GetDC();

pDC->MoveTo(m_ptOrigin);

pDC->LineTo(point);

         ReleaseDC(pDC);

 

MFC为我们提供了一个设备描述表的封装类CDC,该类封装了所有与绘图相关的操作。

该类提供了一个数据成员m_hDC,用来保存与CDC类相关的DC句柄;

 

 

4.      利用MFC的CClientDC类实现画线功能,它继承于CDC类,在构造时调用GetDC函数,在析构时候调用ReleaseDC()函数;所有我们不用再显示调用;

 

 

//CClientDC(GetParent());不仅在客户区画图

CClientDCdc(this);

         dc.MoveTo(m_ptOrigin);

         dc.LineTo(point);

 

5.      利用MFC的CWindowDC类实现画线功能

 

 

         CWindowDCdc(this);

         //CWindowDC dc(GetDesktopWindow());

 

         dc.MoveTo(m_ptOrigin);

         dc.LineTo(point);

 

 

6.      在程序中,当构造一个GDI对象后,该对象并不会立即生效,必须选入设备描述表中,它才会在以后的绘制操作中生效;

 

一般情况下,在完成绘图操作之后,都要利用SelectObject函数把先前的GDI对象选入设备描述表中,以便使其恢复到先前的状态。

 

 

7.      绘制彩色线条

 

CPen pen(PS_SOLID,1,RGB(255,0,0));//线型,线宽,颜色

CClientDC dc(this);

CPen* pOldPen = dc.SelectObject(&pen);

dc.MoveTo(m_ptOrigin);

dc.LineTo(point);

         dc.SelectObject(pOldPen);

 

8.      使用画刷绘图

 

CBrush brush(RGB(255,0,0));

CClientDC dc(this);

         dc.FillRect(CRect(m_ptOrigin,point),&brush);//矩形区域

 

9.位图画刷

 

 

         CBitmapbitmap;//创建位图对象

         bitmap.LoadBitmap(IDB_BITMAP1);//加载位图资源

         CBrushbrush(&bitmap); 、、创建位图画刷

         CClientDCdc(this);

         dc.FillRect(CRect(m_ptOrigin,point),&brush);

 

9.      透明画刷

 

         CClientDCdc(this);

         //创建一个空画刷

         CBrush*pBrush = CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));//属于静态成员函数的调用方法

         CBrush*pOldBrush = dc.SelectObject(pBrush);

         dc.Rectangle(CRect(m_ptOrigin,point));

         dc.SelectObject(pOldBrush);

 

 

10.  绘制连续线条

 

 

CClientDC dc(this);

if(m_bDraw == TRUE)//要先判断是否按下

{

           dc.MoveTo(m_ptOrigin);

           dc.LineTo(point);

           //修改线段的起点

                   m_ptOrigin = point;

 

           }

 

 

11.  绘制扇形效果的线条

 

 

CClientDC dc(this);

dc.SetROP2(R2_MERGENOTPEN);//绘图模式的函数

CPen pen(PS_SOLID,1,RGB(255,0,0));

CPen *pOldPen = dc.SelectObject(&pen);

if (m_bDraw == TRUE)

{

           dc.MoveTo(m_ptOrigin);

           dc.LineTo(point);

           dc.LineTo(m_ptOld);

           m_ptOld = point;

}

 

dc.SelectObject(pOldPen);

 

 

孙鑫视频VC++深入详解学习笔记 <br />VC++深入详解学习笔记<br />Lesson1: Windows程序运行原理及程序编写流程<br />Lesson2: 掌握C++基本语法<br />Lesson3: MFC框架程序剖析<br />Lesson4: 简单绘图<br />Lesson5: 文本编程<br />Lesson6: 菜单编程<br />Lesson7: 对话框编程<br />Lesson9: 定制应用程序的外观<br />Lesson10: 绘图控制<br />Lesson11 图形的保存和重绘<br />Lesso 阅读详情

相关推荐

分享孙老师的C++ 教程,孙鑫_VC++深入详解

内容涵盖面广,从入门到精通,授课通俗易懂,分析问题独到精辟,绝对是目前国内顶级的VC++教学视频。Windows编程知识,VC++面向对象的编程思想,MFC编程,涵盖了软件开发中的绝大部分应用,以及在以后开发中可能出现的问题,由孙鑫老师一一帮你剖析。在一些重难点知识以及属于操作系统内核编程方面的知识,孙鑫老师都将给你剖析其本质,讲解其后台运行的原理,让你从根本上理解、掌握并灵活运用这些知识。编程语言枯燥难懂,然而通过孙鑫老师形象化的讲解,Windows和MFC编程中的难点、重点,让你轻松掌握。

Daemon09080的博客 863

孙鑫VC++第四章 2.简单绘图-绘制

简单绘图

qq_38446366的博客 1992

MFC实现三种画线方法

做的不是太好 不算完善 对应的是计算机图形学中的三种画线方法

孙鑫VC++第四章 1.简单绘图-MFC消息映射机制

MFC消息映射机制

qq_38446366的博客 1110

用Docker-Compose三节点部署生产级Doris集群:从配置文件到故障转移

本文详细介绍了如何使用Docker-Compose部署一个生产级的三节点Apache Doris集群。内容涵盖从核心架构理解、配置文件编写到集群初始化验证的全过程,并重点讲解了如何实现高可用、数据持久化、健康检查以及故障转移等生产级运维关键点,为中小团队提供了一种在容器化便利性与系统稳定性间取得平衡的可靠部署方案。

kkk56的博客 857

MounRiver Studio实战:像管理个人项目一样整理沁恒MCU的EVT例程(附文件结构图)

本文详细介绍了如何使用MounRiver Studio重构沁恒MCU的EVT例程,实现工程化管理。通过分析官方EVT设计的局限性,提出标准化的目录结构和迁移步骤,帮助开发者提升代码可维护性和团队协作效率。文章还提供了MounRiver Studio的关键配置参数和常见问题排查指南,适用于沁恒MCU开发者。

weixin_33940469的博客 356

孙鑫MFC学习笔记4:MFC画图

1.画线方法 *1.捕获鼠标按下和弹起消息,获取两个点 *2.消息响应,画线 2.在CMainFrame类中的鼠标左键事件得不到响应的原因是CNameView覆盖了CMainFrame 3.注释宏 4.画线方法 *1.HDC *2.CDC(MFC封装) *3.CC...

weixin_30819085的博客 291

Zabbix-获取客户端的SNMP数据

网口状态(ifOperStatus)的 OID 是1.3.6.1.2.1.2.2.1.8,查询时需要用1.3.6.1.2.1.2.2.1.8.1(第 1 个网口)、1.3.6.1.2.1.2.2.1.8.2(第 2 个网口)等。表格对象是指 “包含多个同类实例的对象”(如设备的多个网口、多个进程等,每个实例需要单独标识)。在 SNMP 规范中,标量对象的完整 OID 必须以.0结尾,.0是标量对象的唯一实例编号。标量对象是指 “单一值的对象”(如设备的名称、温度、状态等,整个设备只需要一个值来表示)。

徐子元 1728

MFC应用程序设计(第二版)学习笔记

第一章, Windows应用开发基础 基本概念 windows API函数按功能大体分为以下: 窗口管理函数 WUI 图形设备管理函数 GUI 系统服务函数 SUI   早期开发使用软件开发工具包sdk,softwaredevelopment kit 就是直接使用API函数来开发应用程序 自面向对象发展以来,人们对WindowsAPI进行了封装,从而使Windows应用程序结构和

点滴积累成就技术梦想 6558

5G R18标准:AI/ML如何重塑空口优化与网络架构

人工智能与机器学习正逐步成为通信网络优化的核心技术。其核心原理在于通过数据驱动模型,从海量网络数据中学习信道变化、用户行为等统计规律,替代传统的基于固定规则的优化方法。这一技术范式能显著提升网络性能与效率,尤其在空口资源管理、干扰协调和能耗控制等场景中价值突出。在5G Advanced(R18)标准化框架下,AI/ML被系统性地引入空口设计,聚焦于信道状态信息反馈增强、波束管理与预测等关键用例。通过定义网络侧AI、终端侧AI及联合学习的标准化接口与流程,R18旨在实现跨厂商设备的智能协同,推动无线网络向自适

weixin_35671843的博客 244

Python 爬虫实战:爬取知乎问答与评论数据并分析

摘要:本文以Python为核心工具,系统讲解知乎问答与评论数据爬取的技术方案。通过分析知乎API接口结构,详细阐述Requests库结合正则表达式的数据获取方法,涵盖请求头构造、鉴权参数处理等关键技术。文章对比了HTML解析、API调用和Selenium模拟三种爬取方案的优劣,提供完整的代码实现,包括问题信息获取、回答列表爬取和评论数据提取。同时介绍了数据存储(JSON/Excel)和基础文本分析(词云生成)方法,并给出合规使用建议和技术优化方向,为开发者提供了一套可落地的知乎数据爬取与分析解决方案。

2503_91057718的博客 1821

孙鑫VC++深入详解

winmain函数是程序入口函数,由系统调用。LPSTR lpCmdLine, // 空终止的字符串,指定传递给应用程序的命令行参数int nCmdShow // 指定窗口应该如何显示C++相比于C的特性:封装性、继承性、多态性;对象具有状态和行为,状态保存在成员变量中,行为通过函数实现;标准输入输出流对象:cin(>>)默认键盘 和 cout(<<)、cerr(<<)默认显示器;自动根据数据类型调整输入输出格式;结构体中的函数称为成员函数。程序2.1。

He Zexian的博客 1905

[QMT量化交易小白入门]-三十七、QMT中如何使用类似于通达信中的VBA函数(量化python代码解析)

这段代码主要围绕着在QMT环境中实现类似通达信VBA函数的功能展开,核心功能是基于RSI指标来判断股票的买卖时机,并根据持仓情况进行相应的交易操作。class G():passg = G()这里定义了一个空类G,并创建了该类的实例g。这个实例g将作为全局变量来存储一些在整个程序运行过程中需要共享的数据,例如除复权类型、股票代码、目标数量等。1、使用VBA开发策略时,参数固化的问题会带来一些限制,比如无法修改MA函数的周期参数,只能使用固定周期。

木头大左的博客 1699

孙鑫VC++深入详解:Lesson4

------ // DrawView.cpp : implementation of the CDrawView class // #include "stdafx.h" #include "Draw.h" #include "DrawDoc.h" #include "DrawView.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_F

-----------------------------不要在跟自己无关的事情上浪费时间 1688

目前最强的价格行为技术分析AI!大A也能用!还免费!

有球友推荐了一个历史最强的价格行为技术分析AI工具,使用下来确实很惊艳,解决了 很多AI工具黑盒过程,难以回溯的问题,他的决策过程可解释,提供决策树、诊断结果、原始响应、调试信息和未来走势预期。用户能够看到模型为什么选择“做多、做空或不下单”。会检查置信度、入场条件、盈亏比、结构失效和冷却期。最大的优点不是“预测一定准确”,而是把主观的价格行为分析整理成了可重复、可解释、可校验、可持续跟踪的工程化流程。本文记录本项目在 Windows 上的实际部署与启动方法。

木头大左的博客 76

知识图谱(Knowledge Graph)原理与代码实战案例讲解

知识图谱(Knowledge Graph)原理与代码实战案例讲解 作者:禅与计算机程序设计艺术 / Zen and the Art of Computer Programming 1. 背景介绍 1.1 问题的由来

AI天才研究院 1078

资源分享-孙鑫VC++视频教程 rmvb格式 全20CD完整版

(注意以下为FTP下载地址,建议使用迅雷等下载工具下载,全20CD,已添加完整)

牧西凉的博客 7519

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

孙鑫VC++Lession4

本节课,孙老师讲解了用VC的写的一个画图的编程案例工程名称:Draw (MFC)通过这个案例,我的感觉就是,不仅仅知道了几个画图的函数,和一些画图的方法,更重要的是,这堂课,向我们展示了MFC如何处理消息映射。因为View 是覆盖在了MainFrame上,所以,我们在捕获鼠标左键的消息的时候,都是捕获到了view上的消息,而不是MainFrame上消息响应。所以,我们在要分清楚我们呢

路径的专栏 576

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

孙鑫VC++深入详解六到十章

资源管理器→menu项→双击IDR_MAINFRAME打开菜单编辑器pop-up类型的菜单是弹出式菜单,不能进行命令响应。ID号的命名规则:IDM菜单资源IDC光标资源IDI图标资源。

He Zexian的博客 1223

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

孙鑫VC++深入详解(3):简单绘图

1、MFC消息映射机制 在每个能接受和处理消息的类中定义一个消息和消息处理函数对照表,即消息映射表。在消息映射表中,消息与对应的消息处理函数是成对出现的。当有消息要处理时,程序即在消息映射表中搜索是否有该消息,如有有该消息则调用其对应的消息处理函数。 在视类中添加WM_LBUTTONDOWN消息处理函数后,会增加三处代码: 一是在视类头文件中DECLARE_MESSAGE_MAP宏下面添

milanleon的专栏 2267

孙鑫vc++学习笔记

VC++深入详解学习笔记... 1 Lesson1: Windows程序运行原理及程序编写流程... 1 Lesson2: 掌握C++基本语法... 6 Lesson3: MFC框架程序剖析... 7 Lesson4: 简单绘图... 9 Lesson5: 文本编程... 12 Lesson6: 菜单编程... 15 Lesson7: 对话框编程...

backer 4211

孙鑫VC++讲座笔记

孙鑫VC++讲座笔记关键词: 孙鑫    VC++                                           本文章摘自youkuaiyun.com/hbyufan 的 Blog 1,windows程序设计是种事件驱动方式的程序设计,主要基于消息的。当用户需要完成某种功能时,需要调用OS某种支持,然后OS将用户的需要包装成消息,并投入到消息队列中,最后应用程序从消息队

nokiacfg的专栏 687
上一篇: 孙鑫VC++第2章掌握C++
下一篇: 孙鑫VC++第5章文本编程
C__Monkey
博客等级 码龄14年 12粉丝 87原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值