用C语言easyx 做一个《正弦彩环》

cpp 复制代码
#include <easyx.h>
#include <cmath>
#include<stdio.h>
#define WIN_WIDTH 800
#define WIN_HEIGHT 800

int main()
{
    // 初始化图形界面
    initgraph(WIN_WIDTH, WIN_HEIGHT);
    setbkcolor(WHITE);
    cleardevice();

    // 开启双缓冲
   // BeginBatchDraw();

    // 设置颜色变化参数
    int amplitude = 128;
    double frequency = 0.02;
    double phase = 0;

    // 动画循环
    for (int i = 360; i>0 ; i--)
    {
        // 计算当前角度的正弦值
        double sinValueR = sin(i * frequency + phase);
        double sinValueG = sin(i * 2 * frequency + phase);
        double sinValueB = sin(i * 3 * frequency + phase);

        // 根据正弦值计算RGB颜色分量
        int r = static_cast<int>(255 * (1 + sinValueR));
        int g = static_cast<int>(255 * (1 + sinValueG));
        int b = static_cast<int>(255 * (1 + sinValueB));

        // 设置线条和填充颜色
        setlinecolor(RGB(r, g, b));
        setfillcolor(RGB(r, g, b));

        Sleep(10);
        // 在屏幕中心绘制填充圆
        fillcircle(WIN_WIDTH / 2, WIN_HEIGHT / 2, i);
    }

    // 结束双缓冲,并交换缓冲区,将后缓冲区内容显示到屏幕上
    //EndBatchDraw();

    // 关闭图形界面
    //closegraph();
    getchar();
    return 0;
}

这是一个简单的C++程序,用于在一个图形界面上展示一个彩色的动画效果。程序使用了EasyX图形库,这是一个在Windows平台上用于简化图形编程的库。

程序的主要步骤如下:

  1. 初始化图形界面 :使用initgraph()函数初始化一个800x800像素的窗口,并设置背景颜色为白色。
  2. 设置颜色变化参数 :定义了三个变量amplitude(振幅)、frequency(频率)和phase(相位),这些变量将用于计算RGB颜色分量。
  3. 动画循环 :在一个从360递减到1的循环中,程序计算了三个正弦值sinValueRsinValueGsinValueB,分别对应RGB三个颜色通道。然后,根据这些正弦值计算RGB颜色分量,并设置线条和填充颜色。
  4. 绘制填充圆 :使用fillcircle()函数在屏幕中心绘制一个填充圆,圆的半径由循环变量i决定。每次循环,圆的半径都会减小。
  5. 暂停和颜色变化Sleep(10)函数使程序暂停10毫秒,这样就可以看到圆的颜色在变化。由于正弦函数的周期性,颜色会在循环中周期性地变化。
  6. 结束:程序最后会等待用户输入一个字符,然后退出。

需要注意的是,虽然代码中包含了双缓冲(BeginBatchDraw()EndBatchDraw())和关闭图形界面(closegraph())的函数调用,但这些行都被注释掉了。如果你想要使用双缓冲或关闭图形界面,需要取消这些行的注释。

另外,这个程序需要在支持EasyX图形库的Windows环境下编译和运行。如果你没有安装EasyX库,你需要先下载并安装它,或者将程序中的图形相关代码替换为其他图形库(如OpenCV、SFML等)的代码。

相关推荐
shinelord明11 分钟前
【Python】Python知识总结浅析
开发语言·人工智能·python
浅陌pa14 分钟前
01:(寄存器开发)点亮一个LED灯
c语言·stm32·单片机·嵌入式硬件
吹老师个人app编程教学15 分钟前
阿里巴巴_java开发规范手册详解
java·开发语言
初阳78535 分钟前
【Qt】控件概述(4)—— 输出类控件
开发语言·qt·命令模式
大白_dev38 分钟前
数据校验的总结
java·开发语言
卑微求AC40 分钟前
(C语言贪吃蛇)4.贪吃蛇地图优化及算法说明
c语言·算法
雷神乐乐42 分钟前
Python常用函数
开发语言·python
失落的香蕉1 小时前
Java第二阶段---10方法带参---第三节 面向对象和面向过程的区别
java·开发语言
安冬的码畜日常1 小时前
【玩转 JS 函数式编程_008】3.1.2 JavaScript 函数式编程筑基之:箭头函数——一种更流行的写法
开发语言·javascript·ecmascript·es6·this·箭头函数
只会掉头发的程序猿1 小时前
在QT中将Widget提升为自定义的Widget后,无法设置Widget的背景颜色问题解决方法
开发语言·qt