『壹』 c語言繪圖

試驗發現還可以呀。
如果你的圖形很復雜,可以考慮用函數getimage()和putimage();先用getimage()把一定的圖形讀入內存保存起來,然後在需要的時候再調用putimage()顯示出來。這樣畫面動畫就顯得比較平滑。
你可以查這兩個函數,也可以在網上找到使用它們的實例,對於處理比較復雜實時性要求較高的動畫程序這個是比較有效的。

『貳』 求解C語言繪圖,解釋以下代碼

註解寫得那麼詳細,請問哪裡不懂了。。

『叄』 c語言繪圖代碼



看下這背景可以吧

『肆』 C語言畫圖 程序解析

你這是C++的代碼,而抄且用的是Win32的代碼,裡面會有很多窗體函數API,你只復制了一部分,簡單的來說,C++里,話圖是用的類,
CPaintDC dc(this); 建立了一個CPaintDC對象dc,然後通過操作這個對象來完成一些圖案,就是下面的dc.MoveTo( 20, 20);
dc.LineTo( 20,420);
dc.MoveTo( 20,420);
dc.LineTo(820,420);
dc.MoveTo( 20,420);
dc.LineTo(820, 20);
上面是連線,
dc.Ellipse(x-1+20, 420-y-1, x+1+20, 420-y+1);
這是畫橢圓,

你這段代碼是復制了一部分,而CPaintDC對象屬於誰,應該在頭文件里,具體信息,可以查C++類庫大全

『伍』 使用C語言編程畫圖

換賬號再來回答,veket的小號。。。

.......用了ege圖形庫.........純體力活.........

源代碼....demo.cpp.....

/////////////////////////////////////////

// ege0.3.8

// MinGW g++3.4.2

// veket的小號

/////////////////////////////////////////

#include"graphics.h"

#include<stdio.h>

constintYLEN=50;

constintXLEN=40;

constintWIDTH=10*XLEN;

constintHEIGHT=2*YLEN;

constintXWIDTH=640;

constintYHEIGHT=480;

intmain()

{

intx1,y1,x2,y2,x,y;

charstrbuf[100];

inti;

setinitmode(0);

initgraph(XWIDTH,YHEIGHT);

setbkcolor(RGB(0xcc,0xcc,0xcc));

setfillstyle(RGB(0xff,0xff,0xff));

x2=x1=(getmaxx()-WIDTH)/2;

y1=(getmaxy()-2*HEIGHT-YLEN)/2;

y2=y1+HEIGHT+YLEN;

bar(x1,y1,x1+WIDTH,y1+2*YLEN);

setcolor(RGB(0x04,0x04,0x04));

rectangle(x1,y1,x1+WIDTH,y1+2*YLEN);

outtextxy(x1-20,y1-10,"1");

outtextxy(x1-20,y1-10+YLEN,"0");

outtextxy(x1-20,y1-10+2*YLEN,"-1");

for(x=x1,y=y1+2*YLEN+10,i=0;x<=x1+WIDTH;x+=2*XLEN,i+=2)

{

sprintf(strbuf,"%d",i);

outtextxy(x,y,strbuf);

}

for(x=x1;x<x1+(int)(3*PI*XLEN);x++)

{

y=y1+YLEN-(int)(YLEN*sin(1.0*(x-x1)/XLEN)+0.5);

putpixel(x,y,RGB(0x3e,0x3e,0xff));

}

bar(x2,y2,x2+WIDTH,y2+2*YLEN);

rectangle(x2,y2,x2+WIDTH,y2+2*YLEN);

outtextxy(x2-20,y2-10,"1");

outtextxy(x2-20,y2-10+YLEN,"0.5");

outtextxy(x2-20,y2-10+2*YLEN,"0");

for(x=x2,y=y2+2*YLEN+10,i=0;x<=x1+WIDTH;x+=2*XLEN,i+=2)

{

sprintf(strbuf,"%d",i);

outtextxy(x,y,strbuf);

}

for(x=x2;x<x2+(int)(PI*XLEN);x++)

{

y=y2+2*YLEN-(int)(2*YLEN*sin(1.0*(x-x1)/XLEN)+0.5);

putpixel(x,y,RGB(0x3e,0x3e,0xff));

}

for(x=x2+(int)(2*PI*XLEN);x<x2+(int)(3*PI*XLEN);x++)

{

y=y2+2*YLEN-(int)(2*YLEN*sin(1.0*(x-x1)/XLEN)+0.5);

putpixel(x,y,RGB(0x3e,0x3e,0xff));

}

getch();

closegraph();

return0;

}

『陸』 C語言實現畫圖功能

tc/bc在dos下自帶圖形驅動,可以使用graphics.h 頭文件調用標准C函數,如果堅決不用,請使用系統功能調用,自己編寫繪圖功能,DOS下使用int86()函數實現功能調用。有,你可以參考:

支持SVGA的高解析度繪圖通過調用中斷 10h的4f功能來實現

主要解析度設置代碼

unsigned char set_SVGA_mode(int vmode)
{union REGS r;
r.x.ax=0x4f02;
r.x.bx=vmode;
int86(0x10,&r,&r);
return(r.h.ah);
}

void hide_text_cursor(void)
{union REGS r;
r.h.ah=1;
r.h.ch=32;
int86(0x10,&r,&r);
}

void selectpage(register char page)
{union REGS r;
r.x.ax=0x4f05;
r.x.bx=0;
r.x.dx=page;
int86(0x10,&r,&r);
}

void show_text_cursor(char size)
{union REGS r;
r.h.ah=1;
r.h.cl=size;
r.h.ch=7;
int86(0x10,&r,&r);
}

unsigned int get_SVGA_mode()
{union REGS r;
r.x.ax=0x4f03;
int86(0x10,&r,&r);
return(r.x.bx);
}
windows下本來就是圖形界面,隨便可以畫,有關的概念是:Canvas,brush,color等類/參數,DrawLine/DrawArc函數/方法。

『柒』 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. ");

『捌』 C語言繪圖

cleardevice清除的不僅僅是當前的頁吧
將你的cleardevice();
改為clearviewport();
經測試絕無閃爍

『玖』 C語言繪圖程序

最簡單的是使用GDI畫圖~

『拾』 求一份用C語言繪圖的程序

Turbo C提供了圖形函數的,所有圖形函數均在graphics.h中。在編程之前你要把Options/Linker中的Graphics lib選為on,只有這樣才能保證正確使用圖形函數。
給你一個我以前做實驗畫「22」的例子吧
#include<graphics.h> 頭文件一定要有
int x0,y0,nflag[90][70];
void Writechar(int nflag[90][70])
{
int i,j;
for(i=0;i<90;i++)
{
for(j=0;j<70;j++)
if(nflag[i][j]==1)
putpixel(i,j,1);
else
putpixel(i,j,2);
}
}
void Setchar(int nflag[90][70])
{
int i,j;
for(i=0;i<90;i++)
for(j=0;j<70;j++)
nflag[i][j]=0;

for(i=0;i<90;i++)
for(j=0;j<70;j++)
{ //fist"2"
if((j>6&&j<13)&&(i>8&&i<35))
{
nflag[i][j]=1;
}
if((j>6&&j<33)&&(i>28&&i<35))
{
nflag[i][j]=1;
}
if((j>26&&j<33)&&(i>8&&i<35))
{
nflag[i][j]=1;
}
if((j>26&&j<53)&&(i>8&&i<15))
{
nflag[i][j]=1;
}
if((j>46&&j<53)&&(i>8&&i<35))
{
nflag[i][j]=1;
}

//second "2"
if((j>6&&j<13)&&(i>44&&i<71))
{
nflag[i][j]=1;
}
if((j>6&&j<33)&&(i>64&&i<71))
{
nflag[i][j]=1;
}
if((j>26&&j<33)&&(i>44&&i<71))
{
nflag[i][j]=1;
}
if((j>26&&j<53)&&(i>44&&i<51))
{
nflag[i][j]=1;
}
if((j>46&&j<53)&&(i>44&&i<71))
{
nflag[i][j]=1;
}

}
}

int main()
{
int gdriver=DETECT,gmode;
initgraph(&gdriver,&gmode,"c:\\tc3\\bgi"); 這里的路徑自己改
Setchar(&nflag);
Writechar(&nflag);
getch();
closegraph();
return 0;
}
與我這個程序大致一樣 你只要設計好你的圖的演算法就行了
不懂得函數你可以網路一下就知道了
好了 為了給你解答我把N久不用的資料都翻出來看了 呵呵