首先需要繪圖函數(shù)的頭文件在TC2.0中是graphics.h
創(chuàng)新互聯(lián)建站主營(yíng)貞豐網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,APP應(yīng)用開(kāi)發(fā),貞豐h5重慶小程序開(kāi)發(fā)搭建,貞豐網(wǎng)站營(yíng)銷(xiāo)推廣歡迎貞豐等地區(qū)企業(yè)咨詢
然后需要初始化圖形模式.
在利用繪圖函數(shù)
矩形:bar
圓形:circle
直線:line
等等。你可以到graphics.h文件中去看這些函數(shù)的參數(shù)
舉個(gè)例子
#include stdio.h
#include graphics.h
int main(void)
{
int gdriver; /*圖形驅(qū)動(dòng)器*/
int gmode; /*圖形驅(qū)動(dòng)模式*/
gdriver = DETECT; /*自動(dòng)檢測(cè)硬件,已確定圖形驅(qū)動(dòng)器*/
initgraph(gdriver,gmode,\"\");初始化圖形設(shè)備
setbkcolor(BLUE); /*設(shè)置屏幕背景顏色為藍(lán)色*/
circle(getmaxx() / 2,getmaxy() / 2,100); /*在屏幕中間繪制一個(gè)半
為100的圓*/
closegraph(); /*關(guān)閉圖形模式*/
return(0);
}
II、設(shè)定線型函數(shù)
在沒(méi)有對(duì)線的特性進(jìn)行設(shè)定之前,TURBO C 用其默認(rèn)值,即一點(diǎn)寬的實(shí)線,但TURBO C 也提供了可以改變線型的函數(shù)。
線型包括:寬度和形狀。其中寬度只有兩種選擇:一點(diǎn)寬和三點(diǎn)寬。而線的形狀則有五種。
下面介紹有關(guān)線型的設(shè)置函數(shù)。
void far setlinestyle(int linestyle,unsigned upattern,int thickness); 該函數(shù)用來(lái)設(shè)置線的有關(guān)信息,其中l(wèi)inestyle是線形狀的規(guī)定,見(jiàn)下表。
有關(guān)線的形狀(linestyle)
━━━━━━━━━━━━━━━━━━━━━━━━━
符號(hào)常數(shù) 數(shù)值 含義
—————————————————————————
SOLID_LINE 0 實(shí)線
DOTTED_LINE 1 點(diǎn)線
CENTER_LINE 2 中心線
DASHED_LINE 3 點(diǎn)畫(huà)線
USERBIT_LINE 4 用戶定義線
━━━━━━━━━━━━━━━━━━━━━━━━━
thickness是線的寬度,見(jiàn)下表。
有關(guān)線寬(thickness)
━━━━━━━━━━━━━━━━━━━━━━━━━
符號(hào)常數(shù) 數(shù)值 含義
—————————————————————————
NORM_WIDTH 1 一點(diǎn)寬
THIC_WIDTH 3 三點(diǎn)寬
━━━━━━━━━━━━━━━━━━━━━━━━━
對(duì)于upattern,只有l(wèi)inestyle選USERBIT_LINE 時(shí)才有意義 (選其它線型,uppattern取0即可)。此時(shí)uppattern的16位二進(jìn)制數(shù)的每一位代表一個(gè)象元,如果那位為1,則該象元打開(kāi),否則該象元關(guān)閉。
void far getlinesettings(struct linesettingstypefar *lineinfo);該函數(shù)將有關(guān)線的信息存放到由lineinfo 指向的結(jié)構(gòu)中,表中l(wèi)inesettingstype的結(jié)構(gòu)如下:
struct linesettingstype{
int linestyle;
unsigned upattern;
int thickness;
}
例如下面兩句程序可以讀出當(dāng)前線的特性
struct linesettingstype *info;
getlinesettings(info);
void far setwritemode(int mode);該函數(shù)規(guī)定畫(huà)線的方式。如果mode=0,則表示畫(huà)線時(shí)將所畫(huà)位置的原來(lái)信息覆蓋了(這是TURBO C的默認(rèn)方式)。如果mode=1, 則表示畫(huà)線時(shí)用現(xiàn)在特性的線與所畫(huà)之處原有的線進(jìn)行異或(XOR)操作, 實(shí)際上畫(huà)出的線是原有線與現(xiàn)在規(guī)定的線進(jìn)行異或后的結(jié)果。因此,當(dāng)線的特性不變,進(jìn)行兩次畫(huà)線操作相當(dāng)于沒(méi)有畫(huà)線。
有關(guān)線型設(shè)定和畫(huà)線函數(shù)的例子如下所示。
#includestdlib.h
#includegraphics.h
int main()
{
int gdriver, gmode, i;
gdriver=DETECT;
initgraph(gdriver, gmode, "c:\\caic\\bgi");
setbkcolor(BLUE);
cleardevice();
setcolor(GREEN);
circle(320, 240, 98);
setlinestyle(0, 0, 3); /*設(shè)置三點(diǎn)寬實(shí)線*/
setcolor(2);
rectangle(220, 140, 420, 340);
setcolor(WHITE);
setlinestyle(4, 0xaaaa, 1);
/*設(shè)置一點(diǎn)寬用戶定義線*/
line(220, 240, 420, 240);
line(320, 140, 320, 340);
getch();
closegraph();
return 0;
}
用法: 該函數(shù)調(diào)用方式為void line(int startx,int starty,int endx,int endy); 說(shuō)明: 參數(shù)startx,starty為起點(diǎn)坐標(biāo),endx,endy為終點(diǎn)坐標(biāo),函數(shù)調(diào)用前后,圖形狀態(tài)下屏幕光標(biāo)(一般不可見(jiàn))當(dāng)前位置不改變。
framebuffer(幀緩沖)。
幀的最低數(shù)量為24(人肉眼可見(jiàn))(低于24則感覺(jué)到畫(huà)面不流暢)。
顯卡與幀的關(guān)系:由cpu調(diào)節(jié)其數(shù)據(jù)傳輸速率來(lái)輸出其三基色的配比。
三基色:RGB(紅綠藍(lán))。
在沒(méi)有桌面和圖形文件的系統(tǒng)界面,可以通過(guò)C語(yǔ)言的編程來(lái)實(shí)現(xiàn)在黑色背景上畫(huà)圖!
用下面的代碼,在需要的地方(有注釋)適當(dāng)修改,就能畫(huà)出自己喜歡的圖形!
PS:同樣要編譯運(yùn)行后才能出效果。
#include stdio.h
#include sys/mman.h
#include fcntl.h
#include linux/fb.h
#include stdlib.h
#define RGB888(r,g,b) ((r 0xff) 16 | (g 0xff) 8 | (b 0xff))
#define RGB565(r,g,b) ((r 0x1f) 11 | (g 0x3f) 5 | (b 0x1f))
int main()
{
int fd = open("/dev/fb0", O_RDWR);
if(fd 0){
perror("open err. \n");
exit(EXIT_FAILURE);
printf("xres: %d\n", info.xres);
printf("yres: %d\n", info.yres);
printf("bits_per_pixel: %d\n", info.bits_per_pixel);
size_t len = info.xres*info.yres*info.bits_per_pixel 3;
unsigned long* addr = NULL;
addr = mmap(NULL, len, PROT_WRITE|PROT_READ, MAP_SHARED, fd, 0);
if(addr == (void*)-1){
perror("mmap err. \n");