MFC的CPen与CBush画图对象使用步骤

在这里插入图片描述

在MFC中,CPen和CBrush是两个常用的绘图对象,分别用于定义画笔和画刷,可以用于绘制图形、填充区域等。下面我会详细介绍如何在MFC中使用CPen和CBrush来绘制和填充图形。

使用 CPen 绘制图形:

创建 CPen 对象: 首先,你需要创建一个CPen对象,并指定画笔的样式、颜色和宽度等属性。

Copy Code
CPen myPen;
myPen.CreatePen(PS_SOLID, 2, RGB(255, 0, 0)); // 创建一个红色、宽度为2像素的实线画笔

选入画笔对象: 在绘图过程中,将画笔对象选入设备上下文中,以便使用该画笔进行绘制操作。

CDC* pDC = GetDC(); // 获取设备上下文
CPen* pOldPen = pDC->SelectObject(&myPen); // 将画笔对象选入设备上下文

使用画笔进行绘制: 使用设备上下文的绘图函数来使用该画笔进行绘制操作,例如绘制直线。

pDC->MoveTo(10, 10);
pDC->LineTo(100, 100); // 使用画笔绘制一条直线

恢复原始画笔对象: 绘制完成后,恢复原始的画笔对象到设备上下文中。

pDC->SelectObject(pOldPen); // 恢复原始的画笔对象
ReleaseDC(pDC); // 释放设备上下文

销毁 CPen 对象(可选): 如果不再需要使用CPen对象,可以在合适的时机销毁它。

myPen.DeleteObject(); // 销毁画笔对象

使用 CBrush 填充区域:
创建 CBrush 对象: 类似地,你需要创建一个CBrush对象,并指定画刷的样式和颜色等属性。

CBrush myBrush;
myBrush.CreateSolidBrush(RGB(0, 0, 255)); // 创建一个蓝色的实心画刷

选入画刷对象: 将画刷对象选入设备上下文中。

CBrush* pOldBrush = pDC->SelectObject(&myBrush); // 将画刷对象选入设备上下文

使用画刷进行填充: 使用设备上下文的绘图函数来使用该画刷进行填充操作,例如填充矩形区域。

CRect rect(50, 50, 150, 150);
pDC->Rectangle(&rect); // 使用画刷填充一个矩形区域

恢复原始画刷对象: 填充完成后,恢复原始的画刷对象到设备上下文中。

pDC->SelectObject(pOldBrush); // 恢复原始的画刷对象

销毁 CBrush 对象(可选): 如果不再需要使用CBrush对象,可以在合适的时机销毁它。

myBrush.DeleteObject(); // 销毁画刷对象

通过上述步骤,你可以在MFC应用程序中使用CPen和CBrush来绘制和填充各种图形和区域。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/10968.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

桥梁监控可视化大屏:现代桥梁管理的必备呀。

桥梁监控上可视化有几个重要的原因: 01.实时监控: 可视化的监控系统可以实时显示桥梁的各项监测数据,包括结构变形、振动、温度等,使监控人员能够实时了解桥梁的状态,及时发现异常情况并采取相应的措施。 02.数据分析…

MySQL前缀索引、脏页和干净页、COUNT(*)讨论、表删除内存问题

文章目录 如何加索引如何给身份证号添加索引 SQL语句变慢脏页 (Dirty Pages)干净页 (Clean Pages)为何区分脏页和干净页处理脏页管理策略 flush如何控制 为什么删除表数据后表文件大小不变问题背景核心原因数据存储方式参数影响 解决方案1. 调整innodb_file_per_table设置2. 使…

C#之三目运算、三元运算

三目运算也叫三元运算是一种简单的条件语句,也称为条件运算符。它可以根据一个表达式的结果确定另一个表达式的值。三目运算符使用“?”和“:”来表示。 注意使用bool值进行运算 三目运算符: 套路 三个空位 两个符号 固定写法 : 空位1 ? 空位2 : 空位3; 关键…

2024.5.8 —— LeetCode 高频题复盘

目录 检测循环依赖7. 整数反转LCR 170. 交易逆序对的总数55. 跳跃游戏45. 二叉树的后序遍历50. Pow(x, n)40. 组合总和 II74. 搜索二维矩阵26. 删除有序数组中的重复项61. 旋转链表 检测循环依赖 题目链接 def haveCircularDependency(self, n: int, prerequisites):g [[]for…

MATLAB实现遗传算法优化选址-路径LRP问题(Location-Routing Problem)

MATLAB实现遗传算法优化选址-路径LRP问题(Location-Routing Problem) 一、模型 选址车辆路径问题(Location-Routing Problem, LRP)是一个组合优化问题,旨在同时优化设施位置的选择和车辆的配送路径。在这个问题中,我们考虑一个由…

机器学习 - 决策树

1. 决策树基础 定义与概念 决策树是一种监督学习算法,主要用于分类和回归任务。它通过学习从数据特征到输出标签的映射规则,构建一个树形结构。在分类问题中,决策树的每个叶节点代表一个类别。 案例分析 假设我们有一个关于天气和是否进行…

linux防火墙的操作

linux防火墙的操作 前言1查看防火墙状态2暂时关闭防火墙3永久关闭防火墙4开启防火墙5开启指定端口6关闭指定端口7立即生效8查看开放的端口前言 systemctl是管理linux中服务的命令,可以对服务进行启动、停止、重启、查看状态等操作 firewall-cmd是linux中专门用于控制防火墙的…

并发-守护线程setDaemon()

目录 为什么存在 什么是守护线程 创建守护线程 在使用守护线程时需要注意以下几点 可以使用isDaemon()方法来检查线程是否是守护线程 例1:上面提到当JVM中只剩下守护线程的时候,JVM就会退出,那么写段代码测试下 例2:thread…

小红的字符串构造和小红的排列构造

小红的字符串构造 小红希望你构造一个长度为nnn的、仅包含小写字母的字符串,其中恰好有kkk个长度大于1的回文子串。你能帮帮她吗?输入两个整数n,k,用空格隔开。 1≤n≤10^5,0≤k≤n/2.一个字符串。如果有多解输出任意即可。 可以证明&#x…

[Bug]:由于中国防火墙,无法连接 huggingface.co

问题描述 : OSError: We couldnt connect to https://huggingface.co to load this file, couldnt find it in the cached files and it looks like youscan/ukr-roberta-base is not the path to a directory containing a file named config. Json. Checkout your internet …

[AIGC] 几道 redis数据结构相关面试题

文章目录 7. 数据类型的实现8. 什么是空间预分配以及惰性空间释放,SDS 是怎么实现的9. 为什么说 SDS 是二进制安全的呢10. 说说 redis 里的对象11. 使用 RedisObject 的好处12. RedisObject 的具体结构是什么 7. 数据类型的实现 8. 什么是空间预分配以及惰性空间释放…

Vue3实战笔记(16)—pinia基本用法--Getter

文章目录 前言一、pinia的getter简单理解二、访问其他 store 的 getter总结 前言 在 Pinia 中,getter 类似于 Vuex 中的 getter,允许你从 store 中派生出一些状态,而不需要修改原始状态。这使得我们可以创建基于现有状态的计算属性。 一、pi…

练习题(2024/5/12)

1二分查找 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。 示例 1: 输入: nums [-1,0,3,5,9,12], target 9 输出: 4…

树莓派C语言开发

安装C语言编译器和开发工具 sudo apt update sudo apt install build-essential 此命令会安装GCC编译器以及make等其他工具,这些都是C语言程序开发过程中必需的。 配置文本编辑器 树莓派默认安装了几个文本编辑器,如Nano和Vim。如果你对这些编辑器不熟…

如何远程访问?

远程访问是指在不同的地理位置之间通过网络连接来实现对目标设备或系统的访问。无论是在个人生活还是商业领域,远程访问都起到了重要的作用,帮助人们实现高效的工作和便捷的生活。本文将介绍一款名为【天联】的组网产品,它是一款强大的异地组…

Linux与Windows互传文件【笔记】

Linux与Windows互传文件【笔记】 前言前言推荐Linux与Windows互传文件首先确保Windows安装ssh如何传送文件问题 最后 前言 这是陈旧已久的草稿2023-05-10 00:01:24 这个是准备把计组课程华为智能计组的,传输文件。 最后发现,好像没有实现了。 现在202…

汽车线控转向系统介绍

汽车线控转向系统由方向盘总成、转向执行总成和主控制器(ECU)三个主要部分以及自动防故障系统、电源等辅助系统组成。 线控转向系统(Steering-By-Wire),取消了方向盘和转向车轮之间的机械连接部件,彻底摆脱了机械固件的限制,完全由电能来实现…

【LeetCode】数组——hashmap的妙用

在遇到一类题目时,通过双for循环也可暴力破解,但我们可以通过用hashmap来代替一次for循环节约时间开支,在算法上属于用空间换时间,也能帮助我们更好的理解hashmap这一种重要数据结构,并熟悉hashmap的重要方法。 1.两数…

31Windows精简系统下载推荐

Windows精简系统下载推荐 世界上有很多人在做Windows精简系统,去掉了他们认为不必要的功能和插件,达到了减小系统安装包体积,提升系统运行流畅度和稳定性的目的。 笔者推荐使用大佬不忘初心制作的精简版系统,最精简windows10系统安…

什么是数据平台——企业构建Data+AI的基础数据底座需要的决策参考

什么是数据平台 标准的解释是这样的 Wikipedia A data platform usually refers to a software platform used for collecting and managing data, and acting as a data delivery point for application and reporting software. 数据平台是指将各类数据进行整合、存储、处…