easyX图形库

今天接触了一个特别好的图形库,可以拯救像我一样目前只会C语言,但是又想让程序窗口不再一片漆黑,或者自己做个小游戏

不再那么呆板的超级实用的库。以下是Easy X的简介。

EasyX 是针对 C++ 的图形库,可以帮助 C 语言初学者快速上手图形和游戏编程。

为什么要用 EasyX?

许多学编程的都是从 C 语言开始入门的,而目前的现状是:

1. 有些学校以 Turbo C 为环境讲 C 语言,只是 Turbo C 的环境实在太老了,复制粘贴都很不方便。

2. 有些学校直接拿 VC 来讲 C 语言,因为 VC 的编辑和调试环境都很优秀,并且 VC 有适合教学的免费版本。可惜在 VC 下只能做一些文字性的练习题,想画条直线画个圆都很难,还要注册窗口类、建消息循环等等,初学者会受严重打击的。初学编程想要绘图就得用 TC,很是无奈。

3. 还有计算机图形学,这门课程的重点是绘图算法,而不是 Windows 编程。所以,许多老师不得不用 TC 教学,因为 Windows 绘图太复杂了,会偏离教学的重点。新的图形学的书有不少是用的 OpenGL,可是门槛依然很高。

所以,我想给大家一个更好的学习平台,就是 VC 方便的开发平台和 TC 简单的绘图功能,于是就有了这个 EasyX 库。如果您刚开始学 C 语言,或者您是一位教 C 语言的老师,再或者您在教计算机图形学,那么这个库一定会让您兴奋的。

网址:https://easyx.cn/

你可以下载帮助文档快速上手,希望对你有所帮助!

给大家分享一个时钟(单纯的会C是不可能做出这么漂亮的时钟的)

#include <graphics.h>
#include <conio.h>
#include <math.h>

#define High 480  // 游戏画面尺寸
#define Width 640
#define    PI    3.14159

int main()
{
    initgraph(Width, High);        // 初始化 640 x 480 的绘图窗口    
    int center_x,center_y;      // 中心点的坐标,也是表的中心
    center_x = Width/2;
    center_y = High/2;
    int secondLength = Width/5;           // 秒针的长度
    int minuteLength = Width/6;           // 分针的长度
    int hourLength = Width/7;             // 时针的长度
    
    int secondEnd_x,secondEnd_y;    // 秒针的终点
    int minuteEnd_x,minuteEnd_y;    // 分针的终点
    int hourEnd_x,hourEnd_y;    // 时针的终点
    float secondAngle;       // 秒钟对应的角度
    float minuteAngle;       // 分钟对应的角度
    float hourAngle;         // 时钟对应的角度
    
    SYSTEMTIME ti;                // 定义变量保存当前时间
    
    BeginBatchDraw();
    while (1)
    {
        // 绘制一个简单的表盘
        setlinestyle(PS_SOLID, 1);
        setcolor(WHITE);
        circle(center_x, center_y, Width/4);
        
        // 画刻度
        int x, y,i;
        for (i=0; i<60; i++)
        {
            x = center_x + int(Width/4.3 * sin(PI * 2 * i / 60));
            y = center_y + int(Width/4.3 * cos(PI * 2 * i / 60));
            
            if (i % 15 == 0)
                bar(x - 5, y - 5, x + 5, y + 5);
            else if (i % 5 == 0)
                circle(x, y, 3);
            else
                putpixel(x, y, WHITE);
        }
        
        outtextxy(center_x - 25, center_y + Width/6, "我的时钟");
        
        GetLocalTime(&ti);        // 获取当前时间
        // 秒钟角度变化
        secondAngle = ti.wSecond * 2*PI/60;  // 一圈一共2*PI,一圈60秒,一秒钟秒钟走过的角度为2*PI/60
        // 分钟角度变化
        minuteAngle = ti.wMinute * 2*PI/60 + secondAngle/60;  // 一圈一共2*PI,一圈60分,一分钟分钟走过的角度为2*PI/60
        // 时钟角度变化
        hourAngle = ti.wHour * 2*PI/12 + minuteAngle/12;  // 一圈一共2*PI,一圈12小时,一小时时钟走过的角度为2*PI/12        
        // 由角度决定的秒针端点坐标
        secondEnd_x = center_x + secondLength*sin(secondAngle);
        secondEnd_y = center_y - secondLength*cos(secondAngle);
        
        // 由角度决定的分针端点坐标
        minuteEnd_x = center_x + minuteLength*sin(minuteAngle);
        minuteEnd_y = center_y - minuteLength*cos(minuteAngle);
        
        // 由角度决定的时针端点坐标
        hourEnd_x = center_x + hourLength*sin(hourAngle);
        hourEnd_y = center_y - hourLength*cos(hourAngle);        
        
        setlinestyle(PS_SOLID, 2);  
        setcolor(YELLOW);
        line(center_x, center_y, secondEnd_x, secondEnd_y); // 画秒针
        
        setlinestyle(PS_SOLID, 5);  
        setcolor(BLUE);
        line(center_x, center_y, minuteEnd_x, minuteEnd_y); // 画分针
        
        setlinestyle(PS_SOLID, 10);  
        setcolor(RED);
        line(center_x, center_y, hourEnd_x, hourEnd_y); // 画时针
        
        FlushBatchDraw();        
        Sleep(10);
        
        setcolor(BLACK);
        setlinestyle(PS_SOLID, 2); 
        line(center_x, center_y, secondEnd_x, secondEnd_y);  // 隐藏前一帧的秒针
        setlinestyle(PS_SOLID, 5);  
        line(center_x, center_y, minuteEnd_x, minuteEnd_y); // 隐藏前一帧的分针
        setlinestyle(PS_SOLID, 10);  
        line(center_x, center_y, hourEnd_x, hourEnd_y); // 隐藏前一帧的时针
    }
    
    EndBatchDraw();
    getch();                // 按任意键继续    
    closegraph();            // 关闭绘图窗口
    return 0;
}

但是注意文件后缀名是.cpp因为EasyX是C++的库

猜你喜欢

转载自www.cnblogs.com/zulkar/p/10976566.html