zoukankan      html  css  js  c++  java
  • VC下有了graphics.h兼容库

    VC 绘图库(下载graphics.h):可以在 VC 下像 Turbo C 的 BGI 一样简单的绘图

    为什么要写这个库?
    让初学者从 Turbo C 2.0(以下简称 TC) 或 Borland C++ 3.1 开始学编程是个不错的建议,只是 TC 的环境实在太老了,复制粘贴都很不方便。有一个 Win-TC,简单用了一下,实在是个害人的东西,还不如 TC 好呢,因为它简化了所有调试的部分(或许是我没看到?),而调试是写程序相当重要的一部分。
    不少老师直接拿 VC6 来讲 C 语言的,因为 VC6 的编辑和调试环境都很优秀。只可惜在 VC6 下只能做一些文字性的练习题,想画条直线画个圆都很难,还要注册窗口类、建消息循环等等,初学者会受严重打击的。许多老师让学生在 TC 下绘图,因为这的确会让人有兴趣。
    所以,我想给初学者一个更好的学习环境,就是 VC6 的平台 + TC 的绘图功能,于是就有了这个库。如果您刚开始学 C 语言,或者您是一位教 C 语言的老师,那么这个东西一定会让您兴奋的。
    额外说明
    这个库并不适合做产品,只建议用来入门学习。如果您想做简单的绘图产品,那么 SDL 库或许更适合您。或者,直接介入 DirectX 编程吧。
    安装
    下载的压缩包里除了说明,只有两个主要文件,将 graphics.lib 拷贝到 VC6 文件夹下的 Lib 文件夹内,将 graphics.h 拷贝到 Include 文件夹内,仅此而已,所以我就偷懒没有做安装程序了。
    使用说明
    目前只模拟了极少数 Borland C++ 3.1 的绘图库,只是把我个人理解中的初学者常用的图形函数模拟了一下。
    使用上,基本和 TC 没什么区别。看一个画圆的例子吧:
    #include <graphics.h> // 就是需要引用这个图形库
    #include <conio.h>
    void main()
    {
    initgraph(640, 480); // 这里和 TC 略有区别
    circle(200, 200, 100); // 画圆,圆心(200, 200),半径 100
    getch();              // 按任意键继续
    closegraph();    // 关闭图形界面
    }
    呵呵,很简单吧。

    以下是这个库所支持的函数列表。恩,仅仅是列表,详细的使用说明在下载包内。
    void initgraph(int Width, int Height); // 初始化图形环境
    void initgraph(int Width, int Height, int Flag);
    void closegraph(); // 关闭图形环境
    void cleardevice(); // 清屏
    COLORREF getcolor(); // 获取当前绘图前景色
    void setcolor(COLORREF color); // 设置当前绘图前景色
    COLORREF getbkcolor(); // 获取当前绘图背景色
    void setbkcolor(COLORREF color); // 设置当前绘图背景色
    void getviewsettings(struct viewporttype *viewport); // 获取视图信息
    void setviewport(int left, int top, int right, int bottom, int clip); // 设置视图
    void clearviewport(); // 清空视图
    void getlinesettings(struct linesettingstype *lineinfo); // 获取当前线形
    void setlinestyle(int linestyle, unsigned int upattern, int thickness); // 设置当前线形
    void getfillsettings(struct fillsettingstype *fillinfo); // 获取填充类型
    void setfillstyle(int pattern, int color); // 设置填充类型
    void getfillpattern(char *pattern); // 获取自定义填充类型
    void setfillpattern(const char *upattern, int color); // 设置自定义填充类型
    void getaspectratio(int *xasp, int *yasp); // 获取当前缩放因子
    void setaspectratio(int xasp, int yasp); // 设置当前缩放因子
    void setwritemode(int mode); // 设置绘图位操作模式
    void graphdefaults(); // 重置所有绘图设置为默认值
    COLORREF getpixel(int x, int y); // 获取点的颜色
    void putpixel(int x, int y, COLORREF color); // 画点
    void moveto(int x, int y); // 移动当前点(绝对坐标)
    void moverel(int dx, int dy); // 移动当前点(相对坐标)
    void line(int x1, int y1, int x2, int y2); // 画线
    void linerel(int dx, int dy); // 画线(至相对坐标)
    void lineto(int x, int y); // 画线(至绝对坐标)
    void rectangle(int left, int top, int right, int bottom); // 画矩形
    void getarccoords(struct arccoordstype *arccoords); // 获取圆弧坐标信息
    void arc(int x, int y, int stangle, int endangle, int radius); // 画圆弧
    void circle(int x, int y, int radius); // 画圆
    void pieslice(int x, int y, int stangle, int endangle, int radius); // 画填充圆扇形
    void ellipse(int x, int y, int stangle, int endangle, int xradius, int yradius);// 画椭圆弧线
    void fillellipse(int x, int y, int xradius, int yradius); // 画填充椭圆
    void sector(int x, int y, int stangle, int endangle, int xradius, int yradius); // 画填充椭圆扇形
    void bar(int left, int top, int right, int bottom); // 画无边框填充矩形
    void bar3d(int left, int top, int right, int bottom, int depth, int topflag); // 画有边框三维填充矩形
    void drawpoly(int numpoints, const int *polypoints); // 画多边形
    void fillpoly(int numpoints, const int *polypoints); // 画填充的多边形
    void floodfill(int x, int y, int border); // 填充区域
    void outtext(LPCTSTR textstring); // 在当前位置输出文字
    void outtextxy(int x, int y, LPCTSTR textstring); // 在指定位置输出文字
    int textwidth(LPCTSTR textstring); // 获取字符串占用的像素宽
    int textheight(LPCTSTR textstring); // 获取字符串占用的像素高
    void SetFont(int nHeight,int nWidth,int nEscapement,int nOrientation,int fnWeight,BYTE fdwItalic,BYTE fdwUnderline,BYTE fdwStrikeOut,LPCTSTR lpszFace); // 设置当前字体样式
    void SetFont(const LOGFONT *font); // 设置当前字体样式
    void GetFont(LOGFONT *font); // 获取当前字体样式
    void getimage(int left, int top, int right, int bottom, IMAGE *imgdst); // 从屏幕获取图像
    void getimage(const char *imagefile, IMAGE *imgdst); // 从 BMP 文件获取图像
    void getimage(const IMAGE *imgsrc, int left, int top, int right, int bottom, IMAGE *imgdst); // 从 IMAGE 对象获取图像
    void putimage(int left, int top, IMAGE *img, int op); // 绘制图像
    int getmaxcolor(); // 获取最大颜色值
    int getmaxx(); // 获取最大 x 坐标
    int getmaxy(); // 获取最大 y 坐标
    int getx(); // 获取当前 x 坐标
    int gety(); // 获取当前 y 坐标
    int GetVer(); // 获取当前版本

    http://student.csdn.net/link.php?url=http://hi.baidu.com%2Fyangw80%2Fblog%2Fitem%2F63ff598072a9f9d09023d97f.html

    http://student.csdn.net/space.php?uid=52781&do=blog&id=4228

  • 相关阅读:
    数据结构-树与二叉树-思维导图
    The last packet successfully received from the server was 2,272 milliseconds ago. The last packet sent successfully to the server was 2,258 milliseconds ago.
    idea连接mysql报错Server returns invalid timezone. Go to 'Advanced' tab and set 'serverTimezone' property
    redis学习笔记
    AJAX校验注册用户名是否存在
    AJAX学习笔记
    JSON学习笔记
    JQuery基础知识学习笔记
    Filter、Listener学习笔记
    三层架构学习笔记
  • 原文地址:https://www.cnblogs.com/emanlee/p/1586110.html
Copyright © 2011-2022 走看看