【C++】教你如何在中秋节给家人们画一个星空
前言
将至中秋,想必大家都想给自己的家人们一个惊喜吧!今天就手把手地教大家如何用C++和Easyx画一个星空。
(效果图:)
一、准备Easyx
首先我们要前往Easyx官网下载安装程序,
下载完成后打开程序,并点击“下一步”;
随后选择你的编辑器并点击“安装”。
二、函数介绍
我在这里简单介绍一下几个今天要用的函数:
1、solidcircle
这个函数用于画无边框的填充圆。
函数原型:
void solidcircle(int x,int y,int radius
);
参数解释:
x:圆心 x 坐标
y:圆心 y 坐标
radius:圆的半径
2、setfillcolor
这个函数用于设置当前设备填充颜色。
函数原型:
void setfillcolor(COLORREF color);
参数解释:
color:填充的颜色
3、getbkcolor
这个函数用于获取当前设备背景色。
COLORREF getbkcolor();
4、initgraph
这个函数用于初始化绘图窗口。
函数原型:
HWND initgraph(int width,int height,int flag = NULL
);
参数解释:
width:绘图窗口的宽度
height:绘图窗口的高度
flag:绘图窗口的样式,默认为 NULL。可为以下值:
值 | 含义 |
---|---|
EW_DBLCLKS | 在绘图窗口中支持鼠标双击事件 |
EW_NOCLOSE | 禁用绘图窗口的关闭按钮 |
EW_NOMINIMIZE | 禁用绘图窗口的最小化按钮 |
EW_SHOWCONSOLE | 显示控制台窗口 |
5、closegraph
这个函数用于关闭绘图窗口。
void closegraph();
6、putpixel
这个函数用于画点。
void putpixel(int x,int y,COLORREF color
);
参数
x:点的 x 坐标
y:点的 y 坐标
color:点的颜色
三、实现原理
这个项目的实现原理并不难,月亮就是一个无边框的填充圆;大星星就是先画一个圆,再在四周用背景色画几个圆;小星星就是在随机位置画点。
四、教程
1、打开头文件:
#include <graphics.h>
2、在主函数中(下同)初始化窗口:
initgraph(640, 480);
3、设置填充颜色:
setfillcolor(YELLOW);
4、画一个无边框的填充圆:
solidcircle(450, 80, 50);
由于我们不止只画一个大星星,所以我们最好用函数来实现。
5、在主函数外做一个画大星星的函数:
void star(int x, int y) {setfillcolor(YELLOW);solidcircle(x, y, 20);setfillcolor(getbkcolor());solidcircle(x - 20, y - 20, 20);solidcircle(x + 20, y - 20, 20);solidcircle(x - 20, y + 20, 20);solidcircle(x + 20, y + 20, 20);return;
}
6、在主函数中接着写:
star(50, 50);
star(570, 400);
star(300, 60);
star(250, 300);
star(50, 400);
又因为我们的小星星的位置是随机的,为了产生随机数,我们需要:
7、引入头文件:
#include <time.h>
8、在主函数开头写一句:
srand((unsigned int)time(NULL));
9、再在画大星星的代码后面加上一段画(一百个)小星星的代码:
for (int i = 0; i < 100; i++) {putpixel(rand() % 640, rand() % 480, YELLOW);
}
为了做出一个按下任意键退出的效果,我们需要:
10、引入头文件:
#include <conio.h>
11、在画小星星的代码后面写一句:
_getch();
12、最后,关闭窗口,退出程序:
closegraph();
return 0;
五、完整代码
#include <graphics.h>
#include <time.h>
#include <conio.h>void star(int x, int y) {setfillcolor(YELLOW);solidcircle(x, y, 20);setfillcolor(getbkcolor());solidcircle(x - 20, y - 20, 20);solidcircle(x + 20, y - 20, 20);solidcircle(x - 20, y + 20, 20);solidcircle(x + 20, y + 20, 20);return;
}int main() {srand((unsigned int)time(NULL));initgraph(640, 480);setfillcolor(YELLOW);solidcircle(450, 80, 50);star(50, 50);star(570, 400);star(300, 60);star(250, 300);star(50, 400);for (int i = 0; i < 100; i++) {putpixel(rand() % 640, rand() % 480, YELLOW);}_getch();closegraph();return 0;
}
好了,今天就到这里了。文章存在借鉴。喜欢的麻烦支持一下!
【C++】教你如何在中秋节给家人们画一个星空相关推荐
- 学校老师绝对不会教的方法,让你的孩子拥有一个开挂般的人生!
比勤奋更重要的,是孩子的思维能力. 从上幼儿园开始,很多父母很喜欢给孩子报各种兴趣班,比如钢琴班.英语班.乐高班.报各种各样的课程,就是希望孩子具有18般武艺,赢在起跑线上. 其实除了外在的能力,不显 ...
- 计算机教案三年级冀教版,冀教版小学三年级信息技术教案lbrack;画美丽的早晨rsqb;...
冀教版小学三年级信息技术教案<画美丽的早晨> 课时安排:1课时 课前分析: 一.教材与教学对象分析: "画美丽的早晨"是由河北省电化教育馆和DC加拿大国际交流中心合作编 ...
- 画动漫女孩的方法,教你好看的动漫女孩怎么画
好看的动漫女孩怎么画,画动漫女孩的方法,今天来教你画一个扎着麻花辫的女生,麻花辫是一种发型,把头发分成三束交叉扎起来像麻花样的辫子,快来跟着练习画一个可爱的动漫女孩吧! 可爱的动漫女孩子绘画教程步骤:
- 《教我兄弟学Android逆向01 编写第一个Android程序》
前言 之所以准备写这一系列逆向的教程是因为有一些同学私信我说自己想学习Android逆向但是不知道怎么去学习 包括自己身边的一些计算机专业的同学 在大学里面老师讲的那些东西要么是自己不感兴趣 要么是自 ...
- 教你如何在maya中一秒建立一个花瓶~!
教你如何在maya中一秒建立一个花瓶-! maya是3D建模中一个非常重要的工具,为了可以腾出更多的时间打游戏,快速建模,至关重要! 首先,你要了解的是曲线工具,我们将会用到cv曲线工具: 在英文版里 ...
- iOS 教你使用MP、AVPlayer、AVPlayerVC构建一个完整的视频播放器
1.前言 标题必须要浮夸!要感觉像是一个大新闻.长者如是说. 其实是前几天去面试的时候,被要求说必须做过视频播放相关项目.有点闹心之余,就花了点时间在家写了一个简单播放器,基本实现了主流播放器的大致功 ...
- 教你用CSS3画一个透视、旋转的正方体
教你用CSS3画一个透视.旋转的正方体 正方体六个面,无非就是,将每个面进行translateZ提升/降低边长的一半,然后再进行rotate X/rotate Y (n*90deg)的旋转即可. ht ...
- php 绘制几何图形,教你如何运用几何图形绘画手,做一个“灵魂画手”
如何绘画手?手部怎么画?手部结构是什么?学习绘画难吗?怎样才能学好绘画?想必这些都是绘画初学者们经常都会遇到的问题,手部结构对于人体无疑是至关重要的,那么到底如何才能画好手部结构?今天老师就在网络上收 ...
- 明哥之家的又一个博客
明哥之家的又一个博客 文/明哥 网上房地产崩盘的论调不少,但明哥还是果断地在CSDN上投资了,继新浪"明哥之家"之后,今天又建新家了.欢迎朋友多多来访. 曾几何时,大学老师成了一群 ...
最新文章
- server sql 数据c盘迁移d盘_oracle 11g dbf数据文件从C盘迁移到D盘
- jquery mobile快速入门_【K些项目】学透jquery,11个国内最新项目资料
- 使用matlab编译器生成EXE文件
- 用python语言调试程序你用的平台是_Python 程序如何高效地调试?
- WPF不同线程之间的控件的访问
- pytorchyolov4训练_使用pytorch-yolov5 訓練自己的數據集-2020.6.15
- 【剑指offer】面试题25:合并两个排序的链表(Java)
- 异动分析技术解决方案—异动归因之指标拆解
- oracle用户密码已过期,oracle用户密码过期的处理方法
- 02 掌握实现数据导入导出的方法 1214
- dmz区服务器系统激活,dmz主机搭建服务器
- 8-1 数据结构图的主要遍历实验流程图_ReactDOM渲染流程图
- 使用 matlab 数字图像处理(八)—— 画圆
- 剖析Disruptor:为什么会这么快?(一)Ringbuffer的特别之处
- 【历史上的今天】5 月 31 日:Amiga 之父诞生;BASIC 语言的共同开发者出生;黑莓 BBM 停运
- ac算法 java_Aho-Corasick算法的Java实现与分析
- 元宇宙虚拟数字人系统
- 计算机网络实验入门一
- Mac -- 启动ssh服务
- 跟着尚硅谷学大数据(二)MapReduce
热门文章
- kaldi中的chain model(LFMMI)详解
- 体检管理系统——图形报表ECharts
- Parrot OS 日用尝试及相关问题解决
- html鼠标滚动图片渐渐淡出,原生js和jquery实现图片轮播淡入淡出效果
- 数据库事务隔离级别举例详解
- findContours()函数存储在contours中的数据形式
- Windows服务安装和卸载
- 【Xmanager】Xbrowser-Xstart远程访问RHEL5.3配置
- Ubuntu的终端重启命令
- python stdout_python--几种标准输出(stdout)重定向方式