當前位置:首頁 » 編程語言 » c語言的繪圖

c語言的繪圖

發布時間: 2023-04-06 00:46:49

『壹』 在c語言環境(TC2.0)下開發繪圖程序

#include<stdio.h>
#include<graphics.h>
main()
{ int gdriver,gmode;
gdriver=DETECT;
initgraph(&gdriver,&gmode,"");
setcolor(BLUE);
setfillstyle(1,RED);
pieslice(250,250,0,45,200);
setfillstyle(1,GREEN);
pieslice(250,250,45,90,200);
setfillstyle(1,BLUE);
pieslice(250,250,90,135,200);
setfillstyle(1,CYAN);
pieslice(250,250,135,180,200);
setfillstyle(1,BROWN);
pieslice(250,250,180,225,200);
setfillstyle(1,LIGHTGRAY);
pieslice(250,250,225,270,200);
setfillstyle(1,YELLOW);
pieslice(250,250,270,315,200);
setfillstyle(1,MAGENTA);
pieslice(250,250,315,360,200);
getch();
closegraph();
}

(一) 像素函數
56. putpiel() 畫像蔽陵派素點函數
57. getpixel()返回像素色函數
(二) 直線和線型函數
58. line() 畫線函數
59. lineto() 畫線函數
60. linerel() 相對畫線函數
61. setlinestyle() 設置線型函數
62. getlinesettings() 獲取線型設置函數
63. setwritemode() 設置畫線模式函數
(三)、多邊形函數
64. rectangle() 畫矩形函數
65. bar() 畫條函數
66. bar3d() 畫條塊函數
67. drawpoly() 畫多邊形函數
(四)、 圓、弧和曲線函數
68. getaspectratio()獲取縱橫比函數
69. circle()畫圓函數
70. arc() 畫圓弧函數
71. ellipse()畫橢圓弧函數
72. fillellipse() 畫橢圓區函數
73. pieslice() 畫扇區函數
74. sector() 畫橢圓扇區函數
75. getarccoords()獲取圓弧坐標函數
(五)、 填充函數
76. setfillstyle() 設置填充圖樣和顏色函數
77. setfillpattern() 設置用戶圖樣函數
78. floodfill() 填充閉域函數
79. fillpoly() 填充多邊形函數
80. getfillsettings() 獲取填充設置函數
81. getfillpattern() 獲取用戶圖樣設置函數
(六)、圖像函數
82. imagesize() 圖像宏賀存儲大小函數
83. getimage() 保存圖像函數
84. putimage() 輸出圖像函數

四、圖形和圖像函數
對許多圖形應用程序,直線汪液和曲線是非常有用的。但對有些圖形只能靠操作單個像素才能畫出。當然如果沒有畫像素的功能,就無法操作直線和曲線的函數。而且通過大規模使用像素功能,整個圖形就可以保存、寫、擦除和與屏幕上的原有圖形進行疊加。
(一) 像素函數

56. putpixel() 畫像素點函數
功能: 函數putpixel() 在圖形模式下屏幕上畫一個像素點。
用法: 函數調用方式為void putpixel(int x,int y,int color);
說明: 參數x,y為像素點的坐標,color是該像素點的顏色,它可以是顏色符號名,也可以是整型色彩值。
此函數相應的頭文件是graphics.h
返回值: 無
例: 在屏幕上(6,8)處畫一個紅色像素點:
putpixel(6,8,RED);

57. getpixel()返回像素色函數
功能: 函數getpixel()返回像素點顏色值。
用法: 該函數調用方式為int getpixel(int x,int y);
說明: 參數x,y為像素點坐標。
函數的返回值可以不反映實際彩色值,這取決於調色板的設置情況(參見setpalette()函數)。
這個函數相應的頭文件為graphics.h
返回值: 返回一個像素點色彩值。
例: 把屏幕上(8,6)點的像素顏色值賦給變數color。
color=getpixel(8,6);

(二) 直線和線型函數
有三個畫直線的函數,即line(),lineto(),linerel()。這些直線使用整型坐標,並相對於當前圖形視口,但不一定受視口限制,如果視口裁剪標志clip為真,那麼直線將受到視口邊緣截斷;如果clip為假,即使終點坐標或新的當前位置在圖形視口或屏幕極限之外,直線截斷到屏幕極限。
有兩種線寬及幾種線型可供選擇,也可以自己定義線圖樣。下面分別介紹直線和線型函數。

58. line() 畫線函數
功能: 函數line()使用當前繪圖色、線型及線寬,在給定的兩點間畫一直線。
用法: 該函數調用方式為void line(int startx,int starty,int endx,int endy);
說明: 參數startx,starty為起點坐標,endx,endy為終點坐標,函數調用前後,圖形狀態下屏幕游標(一般不可見)當前位置不改變。
此函數相應的頭文件為graphics.h
返回值: 無
例: 見函數60.linerel()中的實例。

59. lineto() 畫線函數
功能: 函數lineto()使用當前繪圖色、線型及線寬,從當前位置畫一直線到指定位置。
用法: 此函數調用方式為void lineto(int x,int y);
說明: 參數x,y為指定點的坐標,函數調用後,當前位置改變到指定點(x,y)。
該函數對應的頭文件為graphics.h
返回值: 無
例: 見函數60.linerel()中的實例。

60.linerel() 相對畫線函數
功能: 函數linerel() 使用當前繪圖色、線型及線寬,從當前位置開始,按指定的水平和垂直偏移距離畫一直線。
用法: 這個函數調用方式為void linerel(int dx,int dy);
說明: 參數dx,dy分別是水平偏移距離和垂直偏移距離。
函數調用後,當前位置變為增加偏移距離後的位置,例如,原來的位置是(8,6),調用函數linerel(10,18)後,當前位置為(18,24)。
返回值:無

『貳』 關於C語言繪圖問題.

不同的C有不同的繪圖函數。頭文件名和庫名也不同。

VC++中用MFC, CDC類中有繪圖函數,三維用opengl繪圖函數。純C可用GLUT畫二維三維沒野圖。

例如:
畫直線,畫弧:
pDC->MoveTo(50,50); pDC->LineTo(50,200);
pDC->Arc(50,50,150,150,100,50,100,50);
畫塗色的橢圓辯察遲
pDC->SelectObject(aBrush);
pDC->攜李Ellipse(350,50,450,150);
畫3維多邊形:
glBegin(GL_POLYGON);
glNormal3f(cube_n[5][0],cube_n[5][1],cube_n[5][2]);
glVertex3f(cube_v[5][0],cube_v[5][1],cube_v[5][2]);
glNormal3f(cube_n[1][0],cube_n[1][1],cube_n[1][2]);
。。。。
glEnd();

『叄』 如何用c語言畫圖,舉幾個最簡單的例子

首先需要繪圖函數的頭文件在TC2.0中是graphics.h
然後需要初始化圖形模式.
在利用繪圖函數
矩形:bar
圓形:circle
直線:line
等等。你可以到graphics.h文件中去看這些函數的參數
舉個例子

#include <stdio.h>
#include <graphics.h>

int main(void)
{
int gdriver; /*圖形驅動器*/
int gmode; /*圖形驅動模式*/

gdriver = DETECT; /*自動檢測硬體,已確定圖形驅動器*/
initgraph(&gdriver,&gmode,\"\");初始化圖形設備
setbkcolor(BLUE); /*設置屏幕背景顏色為藍色*/
circle(getmaxx() / 2,getmaxy() / 2,100); /*在屏幕中間繪制一個半
為100的圓*/
closegraph(); /*關閉圖形模式*/
return(0);
}

『肆』 c語言如何畫圖

c語言畫圖 要選對 C語言編程工具。 目前最方便的是「習語言」,它能編譯所有C代碼,又能在C代碼中使用它支持的繪圖函數。
也可以使用二十年前的C語言編程工具來繪圖,通常是在DOS窗口中繪圖。

『伍』 C語言簡單繪圖,求教啊!!!!急

C語言函數庫有畫點point(),line()線,顏色設置color(),滑鼠鍵盤中斷int86x(),圖形模式字元輸出output()等函數,首先得根據你的顯示器(VGA/BGA)初始化,然後就可以利用這些函數了,具體的你要看C語言高級編程,我很久沒搞了很多都忘記了,以前用C語言都編過小游戲程序還在家裡那台機子上

『陸』 C語言如何畫圖

framebuffer(幀緩沖)。
幀的最低數量為24(人肉眼可見)(低於24則感覺到畫面不流暢)。
顯卡與幀的關系:由cpu調節其數據傳輸速率來輸出其三基色的配比。
三基色:RGB(紅綠藍)。

在沒有桌面和圖形文件的系統界面,可以通過C語言的編程來實現在黑色背景上畫圖!

用下面的代碼,在需要的地方(有注釋)適當修改,就能畫出自己喜歡的圖形!

PS:同樣要編譯運行後才能出效果。

  • #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. ");

  • exit(EXIT_FAILURE);

printf("xres: %d ", info.xres);

printf("yres: %d ", info.yres);

printf("bits_per_pixel: %d ", 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. ");

『柒』 如何在VC++6.0中使用C語言簡單的繪圖畫圖功能

用 VC 實現 繪圖相對還是比較容易的.

  1. 定義好圖元類, 成員 主要有 位置, 線型,填充類型等; 實現肢鄭山繪圖方法: 調用 CDC 類的 繪圖函數實現繪制;

  2. 定義好圖元的存儲管理, 可以用鏈表,或數組;

  3. 如果 用 文檔-視圖 框架,在視圖的 OnDraw 方法中, 調用各圖元的繪圖方法, 完成 圖形的顯示;

如果沒用文檔-視圖 框架,則在 窗口的 WM_PAINT事件中,完成繪圖;

4. 設計好交互, 在 WM_LBUTTONDOWN, WM_LBUTTONUP, WM_MOUSEMOVE等事件中, 進行具體實現. 主叢沖要新建 , 改變大小, 拖動等.

這樣基本可以實現 簡單的 繪圖了.


可百歷中度搜索

想用mfc做一個繪圖系統,畫圓直線矩形填充顏色和平移

有我幫網友作的一個例子.

『捌』 如何在VC++6.0中使用C語言簡單的繪圖畫圖功能

最簡單的方法就是森侍在視圖類中獲取DC,然後此伍吵直接調用DC中的畫圖函數。
比如HDC dc=getdc();橘棗
dc.moveto(x,y);
dc.linet(x1,y1);
就是畫一條x,y到x1,y1的直線

『玖』 c語言編程一個畫圖軟體(畫板)該如何編寫求大佬幫助,謝謝。

C語言中提供了庫函數來畫圓,函數名為circle
函數的頭文件為 #include<graphics.h>

函數功能: circle()使用當前繪圖色並以實線畫一個完整的圓。
用法:該函數調用方式為void circle(int x,int y,int radius);
說明:參數x,y為圓心坐標,radius為圓半徑,用像素個素表示。注意,調用circle()函數畫圓時不用當前線型。

『拾』 求一個純C語言繪圖函數

SDL可以做到。給你貼個源碼

#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<SDL/SDL.h>
#include<SDL/SDL_image.h>

//函數聲明
int Init(void);
SDL_Surface *createScreen(int width,int height,int bpp,Uint32 flags);
void destroyScreen(SDL_Surface *screen);

SDL_Surface *loadImageBMP(char *filename);
void loadImage(char *filename,SDL_Surface *screen,int xPos,int yPos);

SDL_Surface *screen;
SDL_Surface *image_handler;
char buffer[10];

int main(int argc,char *argv[])
{
int height=640,width=480;
int bpp=8;

Init();
screen = createScreen(width,height,bpp,SDL_SWSURFACE);
loadImage("./wuyajie.bmp",screen,width/2,height/4);
read(STDIN_FILENO,buffer,1);
destroyScreen(screen);
SDL_Quit();
return 0;
}

int Init(void)
{
if(SDL_Init(SDL_INIT_VIDEO)==-1)
{
fprintf(stderr,"SDL Init Error:%s\n",SDL_GetError());
exit(-1);
}
return 0;
}

/*
創建屏幕,並將屏幕設置為640x480大小
*/
SDL_Surface *createScreen(int width,int height,int bpp,Uint32 flags)
{
SDL_Surface *screen;
if((screen = SDL_SetVideoMode(width,height,bpp,flags))==NULL)
{
fprintf(stderr,"Could not create a screen:%s\n",SDL_GetError());
exit(-1);
}
return screen;
}

/*
載入圖片
*/
void loadImage(char *filename,SDL_Surface *screen,int xPos,int yPos)
{
SDL_Surface *image;
SDL_Rect dest;

image = SDL_LoadBMP(filename);

if ( image == NULL ){
fprintf(stderr, "無法載入 %s: %s\n", filename, SDL_GetError());
exit(-1);
}

dest.x = xPos;
dest.y = yPos;

dest.w = image->w;
dest.h = image->h;
SDL_BlitSurface(image,NULL,screen,&dest);
SDL_UpdateRects(screen,1,&dest);

}

void destroyScreen(SDL_Surface * screen)
{
SDL_FreeSurface(screen);
}

熱點內容
android讓狀態欄透明 發布:2024-11-02 12:20:09 瀏覽:180
java反射使用 發布:2024-11-02 12:09:03 瀏覽:920
賺錢游戲掛機腳本鏈接 發布:2024-11-02 12:08:22 瀏覽:810
windowsxp用戶名和密碼是什麼啊 發布:2024-11-02 12:03:13 瀏覽:950
工行解壓碼 發布:2024-11-02 12:03:07 瀏覽:118
本田冠道出廠配置什麼牌子輪胎 發布:2024-11-02 12:03:07 瀏覽:470
怎麼打開被gcc編譯過的軟體 發布:2024-11-02 12:00:52 瀏覽:435
新時達as380原始密碼是多少 發布:2024-11-02 11:51:27 瀏覽:810
導航網站源碼下載 發布:2024-11-02 11:49:55 瀏覽:976
飢荒搭建的伺服器如何換新檔 發布:2024-11-02 11:48:11 瀏覽:958