将至中秋,想必大家都想给自己的家人们一个惊喜吧!今天就手把手地教大家如何用C++和Easyx画一个星空。
(效果图:)
首先我们要前往Easyx官网下载安装程序,
下载完成后打开程序,并点击“下一步”;
随后选择你的编辑器并点击“安装”。
我在这里简单介绍一下几个今天要用的函数:
这个函数用于画无边框的填充圆。
void solidcircle(
int x,
int y,
int radius
);
x:圆心 x 坐标
y:圆心 y 坐标
radius:圆的半径
这个函数用于设置当前设备填充颜色。
void setfillcolor(COLORREF color);
color:填充的颜色
这个函数用于获取当前设备背景色。
COLORREF getbkcolor();
这个函数用于初始化绘图窗口。
HWND initgraph(
int width,
int height,
int flag = NULL
);
width:绘图窗口的宽度
height:绘图窗口的高度
flag:绘图窗口的样式,默认为 NULL。可为以下值:
值 | 含义 |
---|---|
EW_DBLCLKS | 在绘图窗口中支持鼠标双击事件 |
EW_NOCLOSE | 禁用绘图窗口的关闭按钮 |
EW_NOMINIMIZE | 禁用绘图窗口的最小化按钮 |
EW_SHOWCONSOLE | 显示控制台窗口 |
这个函数用于关闭绘图窗口。
void closegraph();
这个函数用于画点。
void putpixel(
int x,
int y,
COLORREF color
);
x:点的 x 坐标
y:点的 y 坐标
color:点的颜色
这个项目的实现原理并不难,月亮就是一个无边框的填充圆;大星星就是先画一个圆,再在四周用背景色画几个圆;小星星就是在随机位置画点。
1、打开头文件:
#include
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
8、在主函数开头写一句:
srand((unsigned int)time(NULL));
9、再在画大星星的代码后面加上一段画(一百个)小星星的代码:
for (int i = 0; i < 100; i++) {
putpixel(rand() % 640, rand() % 480, YELLOW);
}
为了做出一个按下任意键退出的效果,我们需要:
10、引入头文件:
#include
11、在画小星星的代码后面写一句:
_getch();
12、最后,关闭窗口,退出程序:
closegraph();
return 0;
#include
#include
#include
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;
}
好了,今天就到这里了。文章存在借鉴。喜欢的麻烦支持一下!