zoukankan      html  css  js  c++  java
  • 使用graphics.h来绘制图形

    |   版权声明:本文为博主原创文章,未经博主允许不得转载。

      graphics.h是TC里面的图形库,如果要用的话应该用TC来编译。分为:像素函数、直线和线型函数、多边形函数、填充函数等。然而在我们使用的编译器vc6.0和visual studio 2013编译器中是不支持graphics.h图形库的,当然vc6.0和visual studio 2013编译器也自带了微软的图形库API(也叫Windows API,它的函数基本上包含在了windows.h的头文件中),那么如果我们要在vc6.0和visual studio 2013中使用graphics图形库怎么办?我们有两种解决的方法。

      第一种:首先我们下载一个TC编译器安装,然后在的安装目录下面找到include文件夹和lib文件夹,再将其中的graphics图形绘制的.h文件和.lib文件复制粘贴到我们的VC6.0和visual studio 2013对应的文件夹下面去。(这个方法比较的麻烦)

      第二种:下载EasyX来添加graphics.h图形库。

      首先下载好EasyX,下载网址:http://www.easyx.cn/downloads/。在下面红框中随便选择下载一个,我下载的是EasyX_2014冬至版

      

      下载好后,将压缩包解压。我们就会在解压后的文件夹中看到有关graphics图形库相关的lib和include文件夹。

      

      然后,再将上面lib文件夹和include文件夹下面的内容复制到你的vc和visual studio 2013安装目录的对应的lib和include的文件夹的下面即可。(我这里以vc6.0为例)如下图操作:include和lib文件夹在安装目录的...Microsoft Visual StudioVC98Include(or lib)

       

       

      复制好之后,那么在vc6.0下配置的graphics图形库就已经配置成功了。下面我们通过一个例子来验证下(这里直接使用EasyX帮助文档中的实例进行测试)。

      

    1 #include <graphics.h>      // 就是需要引用这个图形库
    2 #include <conio.h>
    3 void main()
    4 {
    5     initgraph(640, 480);   // 这里和 TC 略有区别
    6     circle(200, 200, 100); // 画圆,圆心(200, 200),半径 100
    7     getch();               // 按任意键继续
    8     closegraph();          // 关闭图形界面
    9 }
    圆的实例源码

      

    // 编译环境:Visual C++ 6.0,EasyX 2014冬至版
    // http://www.easyx.cn
    //
    #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);
    }
    
    // 主函数
    void 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();                    // 关闭绘图窗口
    }
    星空实例源码

       

     1 // 编译环境:Visual C++ 6.0,EasyX 2014冬至版
     2 // http://www.easyx.cn
     3 //
     4 #include <graphics.h>
     5 #include <conio.h>
     6 
     7 void main()
     8 {
     9     // 创建绘图窗口
    10     initgraph(640, 480);
    11 
    12     // 画渐变的天空(通过亮度逐渐增加)
    13     float H = 190;        // 色相
    14     float S = 1;        // 饱和度
    15     float L = 0.7f;        // 亮度
    16     for(int y = 0; y < 480; y++)
    17     {
    18         L += 0.0005f;
    19         setlinecolor( HSLtoRGB(H, S, L) );
    20         line(0, y, 639, y);
    21     }
    22 
    23     // 画彩虹(通过色相逐渐增加)
    24     H = 0;
    25     S = 1;
    26     L = 0.5f;
    27     setlinestyle(PS_SOLID, 2);        // 设置线宽为 2
    28     for(int r = 400; r > 344; r--)
    29     {
    30         H += 5;
    31         setlinecolor( HSLtoRGB(H, S, L) );
    32         circle(500, 480, r);
    33     }
    34 
    35     // 按任意键退出
    36     getch();
    37     closegraph();
    38 }
    彩虹实例源码

      

     *.注意:EasyX不支持.c,只支持.cpp.

         

     其中,在我们解压的文件夹内有一个EasyX的帮助文档,里面有很多的关于graphics图形库函数的介绍,可以参考它进行学习。

         

  • 相关阅读:
    Beta冲刺阶段
    用例图练习
    第四次作业--个人作业--必应词典案例分析
    第五次作业——团队项目——需求规格说明书
    结对编程第三次作业
    第二次作业— —结对项目
    Git使用心得
    Android平台的开发环境的发展演变
    软件工程的实践项目的自我目标
    面试中遇到的问题
  • 原文地址:https://www.cnblogs.com/geore/p/5914664.html
Copyright © 2011-2022 走看看