當前位置:首頁 » 編程語言 » c語言畫圖程序
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言畫圖程序

發布時間: 2022-12-25 02:16:05

『壹』 用c語言畫矩形

每行起始和結束字元均是你的第3個參數
矩形第1行和最後一行中間是第3個參數,其他行根據第4個參數決定是空格或者第3個參數
程序可以這樣寫:
...
for ( m=0;m<a;m++ )
{
printf("%c",c); //第1列
if ( m==0 || m==a-1 ) //第1行和最後一行
for ( n=1;n<b-1;n++ ) printf("%c",c);
else //中間的行
for ( n=1;n<b-1;n++ ) if ( d==0 ) printf(" "); else printf("%c",c); //空心或否
printf("%c\n",c); //最後1列
}
或者可以寫:
for ( m=0;m<a;m++ )
{
printf("%c",c); //第1列
if ( m==0 || m==a-1 || d!=0) for ( n=1;n<b-1;n++ ) printf("%c",c);
else for ( n=1;n<b-1;n++ ) printf(" ");
printf("%c\n",c); //最後1列
}

『貳』 怎樣用c語言畫函數曲線圖

DOS裡面可以直接操作顯存,windows里就不行了,尤其是NT系統。建議用GDI獲DX吧

『叄』 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語言繪制曲線

樓上的觀珠仔很久不見啦(挺掛念那段時光的)!想不到路過此地看到你,這是高科技呀?你還這么老班牙啊,大考小考把你弄糊塗了,高考順利呀!別忘了我這位老兄了,C語言略懂 ~~~~~~傑
1.繪制餘弦曲線
*程序說明與注釋
#include<stdio.h>
#include<math.h>
void main()
{
double y;
int x,m;
for(y=1;y>=-1;y-=0.1) /*y為列方向,值從1到-1,步長為0.1*/
{
m=acos(y)*10; /*計算出y對應的弧度m,乘以10為圖形放大倍數*/
for(x=1;x<m;x++) printf(" ");
printf("*"); /*控制列印左側的 * 號*/
for(;x<62-m;x++)printf(" ");
printf("*\n"); /*控制列印同一行中對稱的右側*號*/
}
}
*運行結果

2.繪制正弦曲線

在屏幕上用「*」顯示0-360度的餘弦函數sin(x)曲線。
1.

/**//*
sin() line.
62 of line width
*/

#include <stdio.h>
#include <math.h>

int main(void)
...{
int j ,k,d,h;
double i ;

for(i=1.0 ; i> 0.0; i-=0.1)
...{
k = (int)(asin(i)*10) ;

for(j=0; j< k ; j++) /**//*print the left */
printf(\" \");
printf(\"*\");
for( ; j< 31-k ; j++)
printf(\" \");

『伍』 c語言如何畫圖

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

『陸』 用c語言寫程序,此程序能畫出來函數y=2x+5的曲線圖形。

此題把數學問題轉化為用C語言描述即可,很多畫圖問題可以使用這種方法。

  1. 假設屏幕左上角為坐標軸原點



#include<stdio.h>
#defineMAX30//選定曲線要顯示的范圍,因為一次函數是一條直線,所以它的顯示範圍無窮
intmain()
{
intx,y;
for(y=30;y>=0;y--)
{
for(x=0;x<MAX;x++)
{
if(y==2*x+5)
{
printf("*");
}
else
{
printf("");//空格,不滿足y=2x+5的點
}
}
printf(" ");//x軸已經到顯示範圍,所以需要換行。
}
return0;
}

『柒』 怎樣用c語言畫圖

你相當於只是畫了10個方塊啊。
你要想連續的話就增加點的數量。
int
num[10]={181,198,207,202,200,197,199,198,215,203};
就是這個。

『捌』 求一用C語言畫直線的程序

C語言的話畫直線用MoveTo()和LineTo()很簡單啊。
幫你復制一份我學習時老師給的畫線兩例:
#include<graphics.h>
#include<math.h>
/*
###############################################################################
功 能:本函數的作用是用逐點比較法來畫一條直線
格 式:void myline1(int x1,int y1,int x2,int y2,int color)
參數說明:x1,y1是起始點坐標,x2,y2是終止點,color是畫線的顏色
調用示例:myline1(10,20,500,440,4)
###############################################################################
*/
void myline1(int x1,int y1,int x2,int y2,int color)
{
/*變數定義開始(2007/10/16增加)*/
int iTx; /*x軸終點的相對坐標xa或臨時變數*/
int iTy; /*y軸終點的相對坐標ya或臨時變數*/
int iDx; /*x軸方向的步長dx*/
int iDy; /*y軸方向的步長dy*/
int iFt; /*偏差Fm*/
int iSt; /*記數循環數(dx+dy)S*/
int iXt; /*x方向循環變數xm*/
int iYt; /*y方向循環變數ym*/
/*變數定義結束*/
/*變數初始化開始*/
/*如果是第三象限或第四象限則換成第一或第二象限*/
if(y2<y1)
{
iTx=x1;
x1=x2;
x2=iTx;
iTy=y1;
y1=y2;
y2=iTy;
}
iTx=x2-x1; /*取x軸的相對坐標*/
iTy=y2-y1; /*取y軸的相對坐標*/
iDx=1;
iDy=1;
iFt=0;
iSt=iTx+iTy;
if(iTx<0)iSt=-1*iTx+iTy;; /*如果在第二象限,則x軸方向步長取負值*/
iXt=0;
iYt=0;
/*變數初始化結束*/
/*數據處理開始*/
while(iSt>0)
{
putpixel(x1+iXt,y1+iYt,color);
if(iTx>=0) /*如果在第一象限*/
{
if(iFt<0) /*如果偏差小於0*/
{
iYt+=iDy; /*y方向走一步*/
iFt+=iTx;
}
else /*如果偏差大於或等於0*/
{
iXt+=iDx; /*x方向走一步*/
iFt-=iTy;
}
}
else
{
if(iFt<0) /*如果偏差小於0*/
{
iXt-=iDx; /*負x方向走一步*/
iFt+=iTy;
}
else /*如果偏差大於或等於0*/
{
iYt+=iDy; /*y方向走一步*/
iFt+=iTx;
}
}
iSt--;
}
}
/*
###############################################################################
功 能:本函數的作用是用來畫一條直線
格 式:void myline2(int x1,int y1,int x2,int y2,int color)
參數說明:x1,y1是起始點坐標,x2,y2是終止點,color是畫線的顏色
調用示例:myline2(10,20,500,440,4)
###############################################################################
*/
int myline2(int x1,int y1,int x2,int y2,int color)
{
int iX; /*x方向的坐標變數*/
int iY; /*y方向的坐標變數*/
int iTx; /*x方向的步長變數*/
int iTy; /*y方向的步長變數*/
float fDx; /*x方向的差分變數*/
float fDy; /*y方向的差分變數*/
float fMinf; /*演算法中的f*/
float fMaxF; /*演算法中的F*/
float fS; /*終點判斷變數*/
fMinf=0.5; /*f=0.5*/
iX=x1;
iY=y1;
putpixel(x1,y1,color);
if(x1==x2&&y1==y2) /*如果終點和起始點相同*/
{
return(1);
}
iTx=1;
iTy=1;
fDx=(float)(x2-x1);
fDy=(float)(y2-y1);
fMaxF=fDy/fDx>0?fDy/fDx:(-fDy/fDx); /*F=|dy/dx|*/
if(fDx<0)iTx=-1;
if(fDy<0)iTy=-1;
fS=fDx>0?fDx:(-fDx);
if(fMaxF==1) /*如果F=1*/
{
iX=x1;
iY=y1;
while(fS>0)
{
iX+=iTx; /*x方向走一步*/
iY+=iTy; /*y方向走一步*/
putpixel(iX,iY,color);
fS--;
}
}
else if(fMaxF>1) /*如果F>1*/
{
fS+=fDy>0?fDy:(-fDy);
while(fS>0)
{
iY+=iTy; /*y方向走一步*/
putpixel(iX,iY,color);
fMinf+=1/fMaxF; /*f=f+1/F*/
fS--;
if(fMinf>=1) /*如果f>=1*/
{
iX+=iTx; /*x方向走一步*/
fMinf--; /*f=f-1*/
putpixel(iX,iY,color);
fS--;
}
}
}
else /*如果F<1*/
{
fS+=fDy>0?fDy:(-fDy);
while(fS>0)
{
iX+=iTx; /*x方向走一步*/
putpixel(iX,iY,color);
fMinf+=fMaxF; /*f=f+F*/
fS--;
if(fMinf>=1) /*如果f>=1*/
{
iY+=iTy; /*y方向走一步*/
fMinf--; /*f=f-1*/
putpixel(iX,iY,color);
fS--;
}
}
}
}

『玖』 C語言畫圖源程序

不是非常理想,但馬馬虎虎吧。

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <time.h>

int main(void)
{
int i,j;
int gdriver = DETECT, gmode, errorcode;
int maxx, maxy,maxc;
int xc,yc,rc,cc; /*circle*/
int xr,yr,wr,hr,cr; /*rectangle*/
int xt,yt,st,ct; /*text*/
char *c;
int dx=50,dy=40;

initgraph(&gdriver, &gmode, "");
errorcode = graphresult();
if (errorcode != grOk)
{
printf("Graphics error: %s\n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1);
}
randomize();
maxx = getmaxx() ;
maxy = getmaxy();
maxc = getmaxcolor();
setcolor(maxc);

while(!kbhit())
{
cleardevice();

xc=dx+(maxx-2*dx-10)*1.0*rand()/RAND_MAX;
yc=dy+(maxy-2*dy-10)*1.0*rand()/RAND_MAX;
rc=dy*1.0*rand()/RAND_MAX;
cc=(maxc-1)*1.0*rand()/RAND_MAX;
setcolor(cc);
circle(xc,yc,rc);
setfillstyle(SOLID_FILL,cc);
floodfill(xc,yc,cc);

xr=dx+(maxx-2*dx-10)*1.0*rand()/RAND_MAX;
yr=dy+(maxy-2*dy-10)*1.0*rand()/RAND_MAX;
wr=dx*1.0*rand()/RAND_MAX;
hr=dy*1.0*rand()/RAND_MAX;
cr=(maxc-1)*1.0*rand()/RAND_MAX;
setcolor(cr);
rectangle(xr-wr/2,yr-hr/2,xr+wr/2,yr+hr/2);
setfillstyle(SOLID_FILL,cr);
floodfill(xr,yr,cr);

xt=dx+(maxx-2*dx-10)*1.0*rand()/RAND_MAX;
yt=dy+(maxy-2*dy-10)*1.0*rand()/RAND_MAX;
st=dy*1.0*rand()/RAND_MAX;
ct=(maxc-1)*1.0*rand()/RAND_MAX;
c[0]='A'+26.0*rand()/RAND_MAX;
c[1]='\0';
setcolor(ct);
settextjustify(LEFT_TEXT, TOP_TEXT);
settextstyle(DEFAULT_FONT,HORIZ_DIR,st);
outtextxy(xt,yt,c);

sleep(1);
}

getch();
closegraph();
return 0;
}