今天偶然看到了C++语言图形编程,觉得非常有意思就想记录下来,以后多多研究了。
(1)首先需要将“graphics.h“头文件和“graphics.lib“库文件配置到VS2019中。配置方法如下:
我们要将“graphics.h”文件复制到上图中的“include”目录中,将“graphics.lib”文件复制到上图目录中的“lib”目录中。接下来我们还要添加C++图形库,在这个网站:https://easyx.cn/可以免费下载C++图形库,下载并安装完成后我们就可以进行图形编程了。有一个前提条件,必须在“.cpp”文件里编写程序。
如果你在编程过程中使用了outtextxy()函数,那么VS可能会提示如下错误:
解决办法如下:
点击最下方的“图形编程2”进入以下界面:
字符集选择“使用多字节字符集”,然后点击确定,这时VS就不会报错了。
实例程序1:
#include <graphics.h>
#include <time.h>
#include <conio.h>
void main()
{
srand((unsigned)time(NULL));// init randomize seed
initgraph(640, 480);// init graph mode
int x, y;
char s[2] = { 0 };
while (!_kbhit())
{
for (int i = 0; i < 479; i++)
{
setcolor(GREEN);
for (int j = 0; j < 3; j++)
{
x = (rand() % 80) * 8;
y = (rand() % 20) * 24;
s[0] = (rand() % 26) + 65;
outtextxy(x, y, s);
}
setcolor(0);
line(0, i, 639, i);
Sleep(10);
if (_kbhit()) break;
}
}
closegraph();
}
程序执行结果如下:
上图中的字符是动态的,可以变化,大家可以自己运行程序看一下。
程序实例2:
#include <graphics.h>
#include <time.h>
#include <conio.h>
#define MAXSTAR 200 // 星星总数
struct STAR
{
double x;
int y;
double step;
int color;
};
STAR star[MAXSTAR];
// 初始化星星
void InitStar(int i)
{
star[i].x = 0;
star[i].y = rand() % 480;
star[i].step = (rand() % 5000) / 1000.0 + 1;
star[i].color = (int)(star[i].step * 255 / 6.0 + 0.5); // 速度越快,颜色越亮
star[i].color = RGB(star[i].color, star[i].color, star[i].color);
}
// 移动星星
void MoveStar(int i)
{
// 擦掉原来的星星
putpixel((int)star[i].x, star[i].y, 0);
// 计算新位置
star[i].x += star[i].step;
if (star[i].x > 640) InitStar(i);
// 画新星星
putpixel((int)star[i].x, star[i].y, star[i].color);
}
// 主函数
int main()
{
srand((unsigned)time(NULL)); // 随机种子
initgraph(640, 480); // 打开图形窗口
// 初始化所有星星
for (int i = 0; i < MAXSTAR; i++)
{
InitStar(i);
star[i].x = rand() % 640;
}
// 绘制星空,按任意键退出
while (!_kbhit())
{
for (int i = 0; i < MAXSTAR; i++)
MoveStar(i);
Sleep(20);
}
closegraph(); // 关闭图形窗口
}
程序执行结果如下:
上图中的星星是动态的,大家也可以自己运行一下程序看看,十分漂亮。