C/C++图形库EasyX保姆级使用教程(三) 图形颜色的填充及相关应用

news2024/11/26 8:40:46

C/C++图形库EasyX保姆级使用教程系列文章目录

第一章 Microsoft Visual Studio 2022和EasyX的下载及安装使用
第二章 图形化窗口设置以及简单图形的绘制
第三章 图形颜色的填充及相关应用


文章目录

  • C/C++图形库EasyX保姆级使用教程系列文章目录
  • 前言
  • 一、如何填充颜色
    • 1.确定颜色
      • 1.1 背景
      • 1.2 线段
      • 1.3 图形颜色的填充
        • 1.3.1 solid和fill的区别
  • 二、实例应用
    • 1.绘制背景
    • 2.绘制棋盘的网格
  • 总结


前言

本篇文章,将继续讲解有关于EasyX图形库相关的知识,主要讲解图形颜色的填充及使用方式


一、如何填充颜色

  1. 使用填充颜色函数,确定填充的颜色
  2. 使用指定函数,进行图形颜色的填充

1.确定颜色

1.1 背景

确定背景颜色的方式,在前面的文章讲过,是通过setbkcolor()实现的,再次不过多赘述

setbkcolor();

1.2 线段

对于设置线段的颜色时,我们可以使用setlinecolor(),具体使用方式与setbkcolor类似

setlinecolor();

1.3 图形颜色的填充

对于图形颜色的填充,我们使用到的是setfillcolor()函数,这个函数可以帮助我们设置好图形填充的颜色,之后我们就可以使用fillcircle()solidcircle()fillrectangle()solidrectangle()等等一系列的函数来进行绘制填充颜色的图形
那么大家可能有一个小小的疑问,solid和fill的区别是什么???

1.3.1 solid和fill的区别

solid和file的区别为画出来的图形是否带着边框,如下图,当我们使用solidcircle(400, 100, 50);进行画圆时,得到的是无边框且被填充了的圆形
不带边框的圆形
详细代码如下:

#include<iostream>
#include<easyx.h>
#include<graphics.h>
using namespace std;
int main() {
	initgraph(800, 600);/*生成一个长宽为800,600的图形化窗口*/
	setbkcolor(RGB(253,151,95));/*通过了RGB进行调色*/
	cleardevice();/*刷新窗口*/
	line(0, 0, 800, 600);/*从起始点(0,0)画到结束点(800,600) 画直线*/
	circle(100, 100, 50);/*circle(圆心x,圆心y,圆半径)  画圆*/
	rectangle(300, 300, 400, 400);/*画矩形   rectangle(左上角x,左上角y,右下角x,右下角y)*/
	solidcircle(400, 100, 50);/*不带边框:solid + 所画图形函数    例:solidcircle、solidrectangle */
	while (true);/*防止程序一闪而过*/
	closegraph();/*关闭图形化窗口*/
	return 0;
}

而fill就是画出来的带边框的图形了,这里再次以圆为例,如下图,当我们使用fillcircle(200, 400, 50);进行画圆时,得到的是有边框且被填充了的圆形,为了使效果更显著,我们把线的颜色设置为黑色
带边框的圆形
详细代码如下:

#include<iostream>
#include<easyx.h>
#include<graphics.h>
using namespace std;
int main() {
	initgraph(800, 600);/*生成一个长宽为800,600的图形化窗口*/
	setbkcolor(RGB(253,151,95));/*通过了RGB进行调色*/
	cleardevice();/*刷新窗口*/
	setlinecolor(BLACK);
	line(0, 0, 800, 600);/*从起始点(0,0)画到结束点(800,600) 画直线*/
	circle(100, 100, 50);/*circle(圆心x,圆心y,圆半径)  画圆*/
	rectangle(300, 300, 400, 400);/*画矩形   rectangle(左上角x,左上角y,右下角x,右下角y)*/
	solidcircle(400, 100, 50);/*不带边框:solid + 所画图形函数    例:solidcircle、solidrectangle */
	fillcircle(200, 400, 50);/*带边框的为: fill + 所画图形函数    例:fillcircle、fillrectangle*/
	while (true);/*防止程序一闪而过*/
	closegraph();/*关闭图形化窗口*/
	return 0;
}

二、实例应用

我们现在已经学习【掌握】了EasyX的一些使用技巧,但是实践是掌握知识的最好方式,那么就跟着我一起来实践一下吧!
我们可以利用所学知识画出一个棋盘,如下图:
棋盘

1.绘制背景

在绘制背景的时候,我们可以挑一个自己喜欢的颜色,如果要这样的话,我们就需要在使用setbkcolor()函数,并且套用RGB()函数,具体的数值,我们可以在画图中找到自己喜欢的,进行设置,如下图:
选取自己喜欢的颜色
我们这样就得到了颜色RGB数值:RGB(86,245,208),之后我们将setbkcolor()函数中套入RGB(86,245,208)即可,代码如下:

#include<iostream>
#include<easyx.h>
#include<graphics.h>
using namespace std;
int main(){
	setbkcolor(RGB(86,245,208));
	return 0;
}

效果图如下:
实例应用图

2.绘制棋盘的网格

绘制网格之前,我们要选择一个适合的颜色作为线段的颜色,同样使用RGB调色,这次我们选择的是比较深的颜色,所以使用setlinecolor(RGB(217,33,24));主要练习使用函数嵌套RGB()函数
接着,我们要绘制棋盘的网格,如果依次去写,未免有些过于复杂,所以我们这里使用for循环进行网格的绘制方格

for (int i = 0; i <= 600; i += 30) {
		line(0, i, 600, i);
		line(i, 0, i, 600);
	}

全部代码如下:

#include<iostream>
#include<easyx.h>
#include<graphics.h>
using namespace std;
int main() {
	initgraph(600, 600);
	setbkcolor(RGB(86, 245, 208));
	cleardevice();
	setlinecolor(RGB(217,33,24));
	for (int i = 0; i <= 600; i += 30) {
		line(0, i, 600, i);
		line(i, 0, i, 600);
	}
	while (true);
	closegraph();
	return 0;
}

效果图展示:
棋盘绘制效果图

总结

本篇文章主要讲解EasyX图形库中的颜色设置及相关应用,下一篇文章将要讲解在EasyX中引入本地图片,以及贴图的相关操作【看文章篇幅,如果过长会放到下下篇文章】
最后,如果你觉的文章写的还不错的话,求点赞求收藏求打赏求转发,最重要的是点一个大大的关注,各位的支持是我创作的最大动力!

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

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

相关文章

TypeScript - 函数(下)

目录 1、在函数中声明this 2、其他需要知道的类型 2.1 void 2.2 object 2.3 unknow 2.4 never 2.5 Function 3、其余参数&#xff08;rest&#xff09;和参数 4、参数解构 5、函数的可分配性 1、在函数中声明this TypeScript 将通过代码流分析推断函数中应该是什么&…

jenkins_svn_maven持续集成

详解Jenkins &#xff0c;svn &#xff0c;maven 项目持续集成 第一步&#xff1a; 由于刚刚接触jenkins 并不知道他是个什么东西&#xff0c;首先百度一下&#xff0c;然后进入官网&#xff0c;下载安装包。 第二步 windows 安装&#xff1a; 下载完了&#xff0c;打开里面…

Spring Boot 中的 SAGA 事务

Spring Boot 中的 SAGA 事务 在分布式系统中&#xff0c;保证数据一致性是非常重要的问题。传统的 ACID 事务模型虽然能够保证单个数据库的数据一致性&#xff0c;但是在分布式系统中却很难实现。因此&#xff0c;近年来出现了一些新的事务模型&#xff0c;其中 SAGA 就是一种…

上海清晖管理咨询有限公司创始人傅永康受邀为第十二届中国PMO大会演讲嘉宾

上海清晖管理咨询有限公司创始人傅永康先生受邀为由PMO评论主办的2023第十二届中国PMO大会演讲嘉宾&#xff0c;演讲议题&#xff1a;PMBOK第七版对PMO的影响。大会将于8月12-13日在北京举办&#xff0c;敬请关注&#xff01; 议题简要&#xff1a; 项目管理协会&#xff08;P…

软件设计模式与体系结构-设计模式-结构型软件设计模式-桥接模式

四、桥接模式 桥接模式&#xff08;Bridge Pattern&#xff09;是一种软件设计模式&#xff0c;它用于将抽象部分与其具体实现部分解耦&#xff0c;使它们可以独立地变化。桥接模式的核心思想是将一个系统分为多个维度&#xff0c;并通过桥接连接这些维度&#xff0c;从而实现…

合理组织安卓活动

本文所有代码均存放于https://github.com/MADMAX110/Starbuzz 开始构建一个应用时&#xff0c;你会考虑这个应用要包含什么&#xff0c;会有各种各样的很多想法&#xff0c;如何组织这些想法来建立一个直观、清晰的应用。 一、活动归类 要组织各种各样的活动&#xff0c;有一种…

IMX6ULL移植篇-uboot网络配置工作

一. uboot 网络IP配置 1. 硬件连接 在使用 uboot 的网络功能之前先用网线将开发板的 ENET2 接口和电脑或者路由器连接&#xff0c; I.MX6U-ALPHA 开发板有两个网口&#xff1a; ENET1 和 ENET2 &#xff0c;一定要连接 ENET2 &#xff0c;ENET2 接口如下&#xff1a…

LIS系统源码 基于互联网技术的医院实验室信息管理系统源码

LIS系统&#xff0c;即实验室信息管理系统&#xff0c;是一种基于互联网技术的医疗行业管理系统&#xff0c;它可以帮助实验室进行样本管理、检测流程管理、结果报告等一系列工作&#xff0c;提高实验室工作效率和质量。下面将从LIS系统的功能、特点方面对其进行详细介绍。 一、…

基于深度学习的高精度工人安全帽检测识别系统(PyTorch+Pyside6+YOLOv5模型)

摘要&#xff1a;基于深度学习的高精度工人安全帽检测识别系统可用于日常生活中或野外来检测与定位工人安全帽目标&#xff0c;利用深度学习算法可实现图片、视频、摄像头等方式的工人安全帽目标检测识别&#xff0c;另外支持结果可视化与图片或视频检测结果的导出。本系统采用…

docker-compose管理mongo

mongo-express 可以线上管理mongo 库&#xff0c;下面记录一下docker-compose 配置 mongo以及mongo-express version: "3.1"services:mongo:image: mongorestart: alwaysports:- 27017:27017environment:- MONGO_INITDB_ROOT_USERNAMEadmin- MONGO_INITDB_ROOT_PASSW…

【花雕】全国青少年机器人技术一级考试备考实操搭建手册5

目录 1、秋千 2、跷跷板 3、搅拌器 4、奇怪的钟 5、起重机 6、烤肉架 7、手摇风扇 8、履带车 9、直升机 10、后轮驱动车 起重机是指在一定范围内垂直提升和水平搬运重物的多动作起重机械。又称天车&#xff0c;航吊&#xff0c;吊车。 轮胎起重机的主要特点是&#xff1a;其行…

CTFHub XSS DOM跳转 WriteUp

前文&#xff1a;DOM反射XSS 进入网站&#xff0c;直接查看源代码&#xff0c;下面是关键代码&#xff0c;这里有xss漏洞&#xff1a; <script>var target location.search.split("")if (target[0].slice(1) "jumpto") {location.href target[1…

深度解读AIGC存储解决方案

5月26日&#xff0c;2023数据基础设施技术峰会在苏州举办&#xff0c;腾讯云首席存储技术专家温涛受邀出席并分享了腾讯云领先的存储技术在AIGC场景中的应用&#xff0c;通过对AIGC业务流程和场景的提炼&#xff0c;从内容生成、内容审核和内容智理三要素介绍了如何智能的存储和…

你可以对AI中台有所了解

一个AI中台覆盖从数据管理、数据标注、模型开发、部署上线到运营管理的AI能力研发与应用全生命周期建设和管理。作为企业AI能力的生产、应用和集中化管理平台&#xff0c;AI中台包括智能数据、模型开发、模型中心、预测服务、AI集市和平台管理等部分。 智能数据&#xff1a;提供…

基于JavaSpringBoot+Vue+uniapp微信小程序实现鲜花商城购物系统

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

归并排序 与 逆序对数量

一、归并排序 题目&#xff1a; 给定你一个长度为 n 的整数数列&#xff0c;请你使用归并排序对这个数列按照从小到大进行排序&#xff0c;并将排好序的数列按顺序输出。 输入格式&#xff1a; 输入共两行&#xff0c;第一行包含整数 n。 第二行包含 n个整数&#xff08;所有整…

Kubernetes(k8s)入门:核心组件详解

文章目录 写在前面一、ReplicationController(RC)1、官方解释2、举个例子3、小总结 二、ReplicaSet(RS)1、官方解释2、举个例子 三、Deployment&#xff08;用的最多&#xff09;1、官方解释2、举个例子&#xff08;1&#xff09;创建nginx_deployment.yaml文件&#xff08;2&a…

MySQL学习基础篇(七)---单行函数

MySQL学习基础篇(七)—单行函数 1 什么是函数 函数在计算机语言的使用中贯穿始终&#xff0c;函数的作用是什么呢&#xff1f;它可以把我们经常使用的代码封装起来&#xff0c;需要的时候直接调用即可。这样既 提高了代码效率 &#xff0c;又 提高了可维护性 。在 SQL 中我们…

学习笔记整理-UML建模与应用复习4-构架建模

在一个更高的层次描述一个应用系统的结构&#xff0c;包括系统组件和组件之间的关系&#xff0c;组件的部署情况&#xff0c;以及硬件设备之间的关系。 1、组件图 用于描述功能所在的组件位置以及它们之间的关系。 包括&#xff1a;组件、接口、以及各种关系。可以显示…

IAR中Zstack协议栈相关问题解决办法

IAR中Zstack协议栈相关问题解决办法 1、Warning[w52]: More than one definition for the byte at address 0x4b in common segment INTVEC. 如果遇到类似 Warning[w52]: More than one definition for the byte at address 0x4b in common segment INTVEC. It is defined i…