MFC图形函数学习10——画颜色填充矩形函数

news2024/11/22 23:18:20

一、介绍绘制颜色填充矩形函数
       前面介绍的几个绘图函数填充颜色都需要专门定义画刷,今天介绍的这个函数可以直接绘制出带有填充色的矩形。
      原型1:void FillSolidRect(int x,int y,int cx,int cy,COLORREF color);
      参数:(x,y)矩形左上角坐标;(cx,cy)矩形宽高;color填充颜色
      返回值:无
      原型2:void FillSolidRect (LPCRECT lpRect,COLORREF color);
      参数:lpRect矩形结构体或类对象指针;color填充颜色。
      返回值:无
      说明:
      a.FillSolidRect函数是CDC类的成员函数,使用时需要CDC类指针调用。
      b.关于画笔、画刷的设置对这个函数没有作用。
      c.FillSolidRect函数绘制的矩形,包括左边界和上边界,不包括右边界和下边界,也就是说右边界和下边界位置不会填充颜色。当填充左右两个相邻矩形时公共边的颜色是右边色块的颜色,上下相邻则是下面矩形的颜色。
二、画刷填充矩形函数
       对于已经画好的矩形,当想改变其填充颜色时,可以使用FillRect函数。
       1.1 画刷填充矩形函数
       原型:void FillRect(LPCRECT lpRect,CBrush* pBrush);
       参数:lpRect是矩形结构体指针,也可使用CRect类对象或对象指针
             pBrush指定画刷对象指针
       返回值:无
       说明:
        a.函数FillRect是CDC类成员函数,使用时需用CDC类指针调用;
        b.当使用CRect做参1时,可以使对象,也可以是指针;
        c.当使用FillRect填充带边框的矩形时,原有的边框宽度只保留1个像素;
        d.这个函数不同于其他绘图函数之处在于,画刷不是选入CDC中,而是作为参数直接传入函数;与FillSolidRect把颜色作为参数相似。
四、案例程序
      题目:在自定义坐标系中,绘制四个宽度、高度均为窗口宽度、高度一半的75%的矩形;位置及要求:第一象限,绿色填充矩形,无边框;第二象限,红色填充矩形,无边框;第三象限,带边框填充蓝色矩形,边框宽度4像素,颜色深灰;第四象限,绘制与第三象限相同带框矩形,然后FillRect函数再次填充,颜色用黄色。
     代码及注释如下(如运行代码可拷贝到OnDraw函数中):

//一、自定义坐标系
	CRect rect;
	GetClientRect(rect);
	pDC->SetMapMode(MM_ANISOTROPIC); 
	pDC->SetWindowExt(rect.Width(), rect.Height()); 
	pDC->SetViewportExt(rect.Width(), -rect.Height()); 
	pDC->SetViewportOrg(rect.Width() / 2, rect.Height() / 2);
	rect.OffsetRect(-rect.Width() / 2, -rect.Height() / 2);
//二、矩形宽、高
	int w = rect.Width() / 2 * .75, h = rect.Height() / 2 * 0.75;
//三、在第一象限绘制无边框绿色填充矩形
    CRect rectI(0, h, w, 0); //第一象限矩形类对象声明、赋值
    pDC->FillSolidRect(&rectI, 0x00ff00);//绘制矩形
//四、在第二象限绘制无边框红色矩形
    CRect rectII(-w, h, 0, 0);//第二象限矩形
    pDC->FillSolidRect(&rectII, 0x0000ff);//绘制矩形
//五、第三、四象限绘制深灰边框蓝色填充矩形
	CRect rectIII(-w, 0, 0, -h); //第三象限矩形
	CRect rectIV(0, 0, w, -h); //第四象限矩形
	CPen grayPen(PS_SOLID, 4, 0x282828); //生成深灰画笔
	CPen* oldPen=pDC->SelectObject(&grayPen);//将深灰画笔选入CDC
	CBrush blueBrush(0xff0000);//生成蓝色画刷
	CBrush* oldBrush = pDC->SelectObject(&blueBrush);//选入画刷
	pDC->Rectangle(rectIII);//在第三象限绘制带框矩形
	pDC->Rectangle(rectIV); //在第四象限绘制带框矩形
	pDC->SelectObject(oldPen); //恢复默认画笔
    pDC->SelectObject(oldBrush); //恢复默认画刷 黄色255、255、0
//六、对第四象限矩形填充黄色
	CBrush yellowBrush(0x00ffff); //生成黄色画刷
	oldBrush = pDC->SelectObject(&yellowBrush); //将黄色画刷选入CDC
	pDC->FillRect(&rectIV, &yellowBrush); //用画刷填充第四象限矩形
	pDC->SelectObject(oldBrush); //恢复缺省画刷
	/*
	说明:第三、第四象限的边框画的都是4个像素宽,但第四象限矩形被
	黄色重新填充后,边框剩下只有1个像素了。
	*/

运行结果截图:

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

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

相关文章

macOS 无法安装第三方app,启用任何来源的方法

升级新版本 MacOS 后,安装下载的软件时,不能在 ”安全性与隐私” 中找不到 ”任何来源” 选项。 1. 允许展示任何来源 点击 启动器 (Launchpad) – 其他 (Other) – 终端 (Terminal): 打开终端后,输入以下代码回车: …

基于“开源 2+1 链动模式 S2B2C 商城小程序”的社区团购运作主体特征分析

摘要:本文聚焦社区团购运作主体,深入探讨便利连锁店型与社会力量型运作主体在社区团购中的特点,并结合“开源 21 链动模式 S2B2C 商城小程序”,分析其对社区团购的影响与作用机制,旨在为社区团购的进一步发展与优化提供…

Properties文件:Properties属性文件键值对的获取方法、如何写入信息到Properties属性文件、Properties对象的用法

目录 1、什么是Properties文件?和普通txt文件有什么区别? 2、读写Properties文件 2.1 代码演示-读取属性文件 2.2、代码演示-把键值对的数据写入到属性文件中去 1、什么是Properties文件?和普通txt文件有什么区别? 我们都知道…

枫清科技亮相 2024 中国 5G+工业互联网大会,推动 AI 赋能新型工业化

11 月 19 日,2024 中国 5G工业互联网大会在武汉盛大开幕,吸引了来自国内外的行业专家与领先企业。本次大会以“实数融合 智造翘楚”为主题,重点围绕 5G 与工业互联网的深度融合应用、人工智能、智能网联汽车等领域展开讨论与成果展示。作为行…

Spring Boot 3.x + OAuth 2.0:构建认证授权服务与资源服务器

Spring Boot 3.x OAuth 2.0:构建认证授权服务与资源服务器 前言 随着Spring Boot 3的发布,我们迎来了许多新特性和改进,其中包括对Spring Security和OAuth 2.0的更好支持。本文将详细介绍如何在Spring Boot 3.x版本中集成OAuth 2.0&#xf…

使用Python编写脚本,为Excel表格添加水印

简介 这是本人实习中的一个小任务,经过无数努力,终于搞出来了。网上很多资料和博客都是lese,完全没有理清楚水印在excel中的定义是什么,插个图片就是水印吗?当然不是!如果帮助到佬们请点个赞吧。 Ecxel中…

MacOS下的Opencv3.4.16的编译

前言 MacOS下编译opencv还是有点麻烦的。 1、Opencv3.4.16的下载 注意,我们使用的是Mac,所以ios pack并不能使用。 如何嫌官网上下载比较慢的话,可以考虑在csdn网站上下载,应该也是可以找到的。 2、cmake的下载 官网的链接&…

jspm东风锻造有限公司重大停管理系统

摘要 东风锻造有限公司重大停管理系统提供给员工和经理一个重大停信息管理的系统。本系统采用了B/S体系的结构,使用了java技术以及MYSQL作为后台数据库进行开发。系统主要分为系统管理员,员工和经理三个部分,系统管理员主要功能包括个人中心…

list =和addAll在List<实体类>数组的应用

实体类 A public class A {private String name;private Integer age;public String getName() {return name;}public void setName(String name) {this.name name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age age;} }用会报错 publi…

探索设计模式:原型模式

设计模式之原型模式 🧐1. 概念🎯2. 原型模式的作用📦3. 实现1. 定义原型接口2. 定义具体的原型类3. 定义客户端4. 结果 📰 4. 应用场景🔍5. 深拷贝和浅拷贝 在面向对象编程中,设计模式是一种通用的解决方案…

多目标优化算法:多目标极光优化算法(MOPLO)求解ZDT1、ZDT2、ZDT3、ZDT4、ZDT6,提供完整MATLAB代码

一、极光优化算法 极光优化算法(Polar Lights Optimization, PLO)是2024年提出的一种新型的元启发式优化算法,它从极光这一自然现象中汲取灵感。极光是由太阳风中的带电粒子在地球磁场的作用下,与地球大气层中的气体分子碰撞而产…

FPGA实现PCIE3.0视频采集转SFP光口千兆UDP网络输出,基于XDMA+GTH架构,提供2套工程源码和技术支持

目录 1、前言工程概述免责声明 2、相关方案推荐我已有的所有工程源码总目录----方便你快速找到自己喜欢的项目我已有的PCIE方案1G/2.5G Ethernet Subsystem实现物理层方案1G/2.5G Ethernet PCS/PMA or SGMII Tri Mode Ethernet MAC实现物理层方案本博客方案的PCIE2.0版本 3、P…

40分钟学 Go 语言高并发:开发环境搭建与工程化实践

Day 01 - Go开发环境搭建与工程化实践 1. Go环境变量配置 1.1 重要的环境变量表格 环境变量说明示例值GOROOTGo语言安装根目录Windows: C:\goLinux/Mac: /usr/local/goGOPATH工作目录,包含src、pkg、binWindows: C:\Users\username\goLinux/Mac: ~/goGOBIN可执行…

【Mysql】函数-----窗口函数

1、介绍 Mysql 8.0 新增了窗口函数,窗口函数又被称为开窗函数,与orcale窗口函数相似,属于Mysql的一大特点。非聚合函数是相对于聚合函数来说的。聚合函数是一组数据计算后返回单个值(即分组)。非聚合函数一次只会处理…

【开源免费】基于SpringBoot+Vue.JS网上订餐系统(JAVA毕业设计)

本文项目编号 T 039 ,文末自助获取源码 \color{red}{T039,文末自助获取源码} T039,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析5.4 用例设计 六、核…

文件上传-阿里云OSS

使用 安装SDK <dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>3.17.4</version> </dependency> 如果使用的是Java 9及以上的版本&#xff0c;则需要添加JAXB相关依赖。添加…

大数据实验4-HBase

一、实验目的 阐述HBase在Hadoop体系结构中的角色&#xff1b;能够掌握HBase的安装和配置方法熟练使用HBase操作常用的Shell命令&#xff1b; 二、实验要求 学习HBase的安装步骤&#xff0c;并掌握HBase的基本操作命令的使用&#xff1b; 三、实验平台 操作系统&#xff1…

【前端】JavaScript 变量引用、内存与数组赋值:深入解析三种情景

博客主页&#xff1a; [小ᶻZ࿆] 本文专栏: 前端 文章目录 &#x1f4af;前言&#x1f4af;场景一&#xff1a;直接赋值与重新引用为什么结果不是 [3, 4, 5]&#xff1f;1. 引用与赋值的基本概念2. 图示分析 关键总结 &#x1f4af;场景二&#xff1a;引用指向的变化为什么…

微信小程序的医院预约挂号系统

摘 要 时代在飞速进步&#xff0c;每个行业都在努力发展现在先进技术&#xff0c;通过这些先进的技术来提高自己的水平和优势&#xff0c;医院预约挂号系统当然不能排除在外。医院预约挂号系统是在实际应用和软件工程的开发原理之上&#xff0c;运用微信开发者、java语言以及S…

微店商品详情 API 接口如何获取

要获取微店商品详情API接口&#xff0c;你需要遵循以下步骤&#xff1a; 注册与认证&#xff1a;首先&#xff0c;你需要在微店平台完成注册&#xff0c;并进行必要的认证流程&#xff0c;以确保具备获取API接口的资格。 深入研究政策&#xff1a;仔细阅读并理解微店关于API使…