VC下有了graphics.h相容庫

來源:互聯網
上載者:User
VC下有了graphics.h相容庫,開源倡議
有很多如鵬網的會員問過“VC、C-Free下怎麼編譯不了用graphics.h編寫的程式?”。這是因為graphics.h是TurboC下的函數庫,不是C語言標準的庫,VC、MinGW沒有提供對其的支援,所以如果需要編譯用graphics.h、bios.h等編寫的程式還是用TurboC吧。
不過這一切即將改變。
剛才上網發現了一個人編寫的graphics.h相容庫。
轉自:http://hi.baidu.com/yangw80/blog/item/63ff598072a9f9d09023d97f.html
我這裡將他的文章整理如下:

為什麼要寫這個庫?
讓初學者從 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(); // 擷取目前的版本

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.