C++图形开发(16):绘制一个圆环和一根针

news/2024/4/28 19:51:26/文章来源:https://blog.csdn.net/pyz258/article/details/131703199

文章目录

  • 绘制一个圆环和一根针
    • 1.1 绘制
    • 1.2 line()函数
    • 1.3 circle()函数
    • 1.4 setlinestyle()函数
    • 1.5 setlinecolor()函数

接下来,我会继续制作一些小游戏,但因为整个难度的上升(毕竟我也是初学者),可能文章不会再像之前那样每个点都讲的那么详细了,文章之间也可能会有断档,但是之后我会开一个graphics.h图形库的专栏,来细细讲解里面的函数,希望能得到您的谅解!

那么今天就来实现一个小游戏“见缝插针”

绘制一个圆环和一根针

1.1 绘制

在这里插入图片描述
我们首先先来绘制一个如上图所示的圆环和针
代码:

#include<graphics.h>
#include<conio.h>
#include<stdio.h>int main() {int width = 800;//定义画面宽度(x)int height = 600;//定义画面高度(y)initgraph(width, height);//创建图形界面setbkcolor(RGB(255, 255, 255));//背景颜色设置成白色cleardevice();//清理屏幕setlinestyle(PS_SOLID, 3);//画笔宽度设置为3setlinecolor(RGB(0, 0, 0));//画笔颜色设置为黑色line(width / 2, height / 2, width / 2 + 160, height / 2);//画针setlinecolor(HSVtoRGB(0, 0.9, 0.8));//画笔颜色设置为红色circle(width / 2, height / 2, 60);//画圆环,在画面中心,半径为60_getch();closegraph();return 0;
}

1.2 line()函数

其中要着重讲一下的就是line()函数
格式:(虽然我也不知道为什么是直线不是线段,毕竟直线没有长度嘛)

line(直线的起始点的 x 坐标,直线的起始点的 y 坐标,直线的终止点的 x 坐标,直线的终止点的 y 坐标);

图解:
在这里插入图片描述
直线的起始点的 x 坐标
直线的起始点的 y 坐标
直线的终止点的 x 坐标
直线的终止点的 y 坐标

1.3 circle()函数

还有circle()函数,用于画无填充圆环
格式:

circle(圆心 x 坐标,圆心 y 坐标,圆的半径);

这个就不用画图解释了吧~

1.4 setlinestyle()函数

setlinestyle()函数在这里的使用就是设置画笔为实线,粗细为3
线型:

含义
PS_SOLID线形为实线
PS_DASH线形为:------------
PS_DOT线形为:············
PS_DASHDOT线形为:-·-·-·-·-·-·
PS_DASHDOTDOT线形为:-··-··-··-··
PS_NULL线形为不可见
PS_USERSTYLE线形样式为用户自定义,由参数 puserstyle 和 userstylecount 指定

1.5 setlinecolor()函数

这个函数就是用来设置画笔颜色,其实你也可以写成不用RGB的格式,以红色为例:

setlinecolor(RED);

这样也是可以的

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

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

相关文章

spring复习:(22)实现了BeanNameAware等Aware接口的bean,相应的回调方法是在哪里被调用的?

AbstractAutowireCapableBeanFactory的doCreateBean用来创建bean, 其中调用了initializeBean方法对bean进行初始化 initializeBean包含如下代码&#xff1a; 而invokeAwareMethods代码如下&#xff1a; 可见其分别判断是否实现了BeanNameAware接口、BeanClassLoaderAware接口…

如何利用PLC远程通讯模块搭建PLC远程控制系统

随着工业自动化的快速发展&#xff0c;PLC&#xff08;可编程逻辑控制器&#xff09;作为重要的控制设备&#xff0c;被广泛应用于工厂和生产线的自动化控制系统。然而&#xff0c;传统的PLC控制系统受限于物理连接和局域网范围内的限制&#xff0c;无法实现远程监控和控制&…

dp算法 力扣174地下城游戏

在学习编程时&#xff0c;算法是一道硬菜&#xff0c;而dp作为算法的一份子&#xff0c;它的地位在编程界举足轻重。 174. 地下城游戏 - 力扣&#xff08;LeetCode&#xff09; 本文是Java代码哦~ 一、题目详情 恶魔们抓住了公主并将她关在了地下城 dungeon 的 右下角 。地…

React中 Real DOM 和 Virtual DOM 的区别?优缺点?

一、是什么 Real DOM&#xff0c;真实 DOM&#xff0c;意思为文档对象模型&#xff0c;是一个结构化文本的抽象&#xff0c;在页面渲染出的每一个结点都是一个真实 DOM 结构&#xff0c;如下&#xff1a; Virtual Dom&#xff0c;本质上是以 JavaScript 对象形式存在的对 DOM …

代码随想录算法学习心得 44 | 309.最佳买卖股票的时机含冷冻期、714.买卖股票的最佳时机含手续费、最近买卖股票时机总结...

一、最佳买卖股票的时机含冷冻期 链接&#xff1a;力扣 描述&#xff1a;给定一个整数数组prices&#xff0c;其中第 prices[i] 表示第 i 天的股票价格 。​ 设计一个算法计算出最大利润。在满足以下约束条件下&#xff0c;你可以尽可能地完成更多的交易&#xff08;多次买…

k8s 大量 pod 处于 ContainerStatusUnknown 状态

如图所示&#xff0c;nexus 正常运行&#xff0c;但产生了大量的状态不明的 pod&#xff0c;原因也无从所知 解决办法&#xff0c;删除多余的 pod&#xff0c;一个一个删除&#xff0c;非常费劲 获取 namespace 中状态为 ContainerStatusUnknown 的 pod&#xff0c;并删除 …

什么是深度学习的误差分解

误差分解是将深度学习模型的预测误差拆分为多个组成部分&#xff0c;以便更好地理解模型性能。在深度学习中&#xff0c;我们通常将预测误差分解为三个部分&#xff1a;偏差&#xff08;Bias&#xff09;、方差&#xff08;Variance&#xff09;和不可避免的误差&#xff08;Ir…

2. CSS3的新特性

2.1CSS3的现状 ●新增的CSS3特性有兼容性问题, ie9才支持 ●移动端支持优于PC端 ●不断改进中 ●应用相对广泛 ●现阶段主要学习: 新增选择器和盒子模型以及其他特性 CSS3给我们新增了选择器,可以更加便捷,更加自由的选择目标元素&#xff1a; 1.属性选择器 2.结构伪类选择器…

【UE】运行游戏时就获取鼠标控制

问题描述 我们经常在点击运行游戏后运行再在视口界面点击一下才能让游戏获取鼠标控制。其实只需做一个设置就可以在游戏运行后自动获取鼠标控制。 解决步骤 点击编辑器偏好设置 如下图&#xff0c;点击“播放”&#xff0c;再勾选“游戏获取鼠标控制” 这样当你运行游戏后直…

熬夜敲代码不伤眼,选好灯具很重要

文章目录 一、引言1.1 程序员的痛点&#xff1a;长时间使用电脑对眼睛的损害1.2 保护眼睛的重要性 二、明基ScreenBar Halo的保护眼睛功能2.1 自动调光&#xff1a;根据环境光调整亮度2.2 非对称光学设计&#xff1a;减少反光和刺眼2.3 沉浸式灯光&#xff1a;照亮全场视野&…

使用Pycharm

本人没有单独安装python&#xff0c;而是直接安装了anaconda 使用Pycharm创建项目 项目取名为HelloWorld&#xff0c;环境使用前面安装的anaconda pycharm安装模块的方法&#xff1a; 打开Pycharm>File > Settings>Project: Python>Project Interpreter

计网笔记--运输层(vital)

1--运输层概述 运输层的任务&#xff1a; 为运行在不同主机上的应用进程提供直接的通信服务&#xff1b; 运输层为应用层提供了两种不同的运输协议&#xff1a; 面向连接的 TCP 和无连接的 UDP 协议&#xff1b; 2--端口号、复用与分用的概念 端口号&#xff1a; 端口号用于区分…

Kotlin基础(五):类和接口

前言 本文主要讲解类和接口&#xff0c;主要包括类的声明、构造器、类成员、修饰符、类的继承、接口、抽象类。 Kotlin文章列表 Kotlin文章列表: 点击此处跳转查看 目录 1.1 类的声明 在 Kotlin 中&#xff0c;类的声明使用关键字 class。下面是一个简单的类声明的示例&…

感受C++模版的所带来的魅力

一、泛型编程思想 首先我们来看一下下面这三个函数&#xff0c;如果学习过了 C函数重载 和 C引用 的话&#xff0c;就可以知道下面这三个函数是可以共存的&#xff0c;而且传值会很方便 void Swap(int& left, int& right) {int temp left;left right;right temp; }…

springboot项目target下面没有mapper.xml文件

文件结构是这个样子,mapper.xml文件在resources/mappers/fdms目录下面 通常来说, 将mapper打包到target目录下只需要在maven下面配置 <resources><resource><directory>src/main/resources</directory><filtering>true</filtering><inc…

【实战项目】c++实现基于reactor的高并发服务器

基于Reactor的高并发服务器&#xff0c;分为反应堆模型&#xff0c;多线程&#xff0c;I/O模型&#xff0c;服务器&#xff0c;Http请求和响应五部分 全局 反应堆模型 Channel 描述了文件描述符以及读写事件&#xff0c;以及对应的读写销毁回调函数&#xff0c;对应存储arg读…

ARM架构介绍

概览 Arm 架构为处理器或内核&#xff08;称为处理单元PE&#xff09;的设计提供了基础。 Arm架构已经集成到许多片上系统 (SoC) 设备中&#xff0c;比如智能手机、微型计算机、嵌入式设备、服务器甚至超级计算机。 Arm架构为软件开发人员提供了通用指令集和工作流程&#x…

爬取 2 万多张 Flickr 图片,莫纳什大学复现 10 年间日本樱花开放的时空特征

内容一览&#xff1a;近年来&#xff0c;全球气候变化形势严峻&#xff0c;由此引发的蝴蝶效应&#xff0c;正深刻地影响着人类和大自然。在这一背景下&#xff0c;收集数百甚至数千公里范围内开花模式的数据&#xff0c;了解气候变化如何对开花植物产生影响&#xff0c;成为近…

python -m 是什么命令

python -m 命令是什么意思 首先python --help 可以看到-m的含义&#xff1a;意思是将库中的python模块用作脚本去运行。 python --help 命令显示结果 python -m xxx.py 和python xxx.py 有什么区别 这是两种加载py文件的方式: 叫做直接运行&#xff08;python xxx.py&#xf…

OpenCV中的RGB与YUV转换

1 基本概念 YUV 颜色空间从模拟电视时代开始就被广泛应用于彩色图像的转换与处理。其基于一个 3x3 的矩阵&#xff0c;通过线性变换将 RGB 像素转换为一个亮度&#xff08;Luma&#xff09;分量 Y 以及两个色度&#xff08;Chroma&#xff09;分量 U 和 V。由于模拟电视存在着多…