求个C语言图形程序

求个C语言图形程序,第1张

多边形裁剪:

#include"graphics.h"启粗

#define LEFT 1

#define RIGHT 2

#define BOTTOM 4

#define TOP 8

#define XL 100.0

#define XR 200.0

#define YB 100.0

#define YT 200.0

encode(float x,float y,int *code)

{

int c

c=0

if(x<XL) c+=LEFT

else if(x>让缺XR) c+=RIGHT

if(y<YB) c+=BOTTOM

else if(y>坦旁辩YT) c+=TOP

*code=c

return

}

main()

{

int drive,mode

int color,i,j,k,m

int code,code1,code2

float sx,sy,px,py

float fx,fy,x,y

float bx[20],by[20]

float pointx[5]={60.0,130.0,150.0,260.0,180.0}

float pointy[5]={150.0,80.0,140.0,160.0,240.0}

printf("\nColor=\n")

scanf("%d",&color)

detectgraph(&drive,&mode)

initgraph(&drive,&mode,"c:\\")

setcolor(3)

line(XL,YB,XL,YT)

line(XL,YB,XR,YB)

line(XL,YT,XR,YT)

line(XR,YB,XR,YT)

setcolor(50)

line(XL+300,YB+200,XL+300,YT+200)

line(XL+300,YB+200,XR+300,YB+200)

line(XL+300,YT+200,XR+300,YT+200)

line(XR+300,YB+200,XR+300,YT+200)

setcolor(color)

line(pointx[4],pointy[4],pointx[0],pointy[0])

for(k=0k<4k++)

{

line(pointx[k],pointy[k],pointx[k+1],pointy[k+1])

}

sx=fx=pointx[0]

sy=fy=pointy[0]

j=0

for(i=1i<=5i++)

{

px=pointx[i]

py=pointy[i]

if(i==5)

{

px=fx

py=fy

}

encode(sx,sy,&code1)

encode(px,py,&code2)

while((code1!=0||code2!=0))

{

if((code1&code2)!=0) return

code=code1

if(code1==0) code=code2

if((LEFT&code)!=0)

{

x=XL

y=sy+(py-sy)*(XL-sx)/(px-sx)

}

else if((RIGHT&code)!=0)

{

x=XR

y=sy+(py-sy)*(XR-sx)/(px-sx)

}

else if((BOTTOM&code)!=0)

{

y=YB

x=sx+(px-sx)*(YB-sy)/(py-sy)

}

else if((TOP&code)!=0)

{

y=YT

x=sx+(px-sx)*(YT-sy)/(py-sy)

}

if(code==code1)

{

sx=xsy=y

encode(x,y,&code1)

}

else

{

px=xpy=y

encode(x,y,&code2)

}

}

if((j>0)&(bx[j-1]==sx)&(by[j-1]==sy))

{

bx[j]=pxby[j]=py

}

if((sx!=0)&(sy!=0))

{

bx[j]=sxby[j]=sy

bx[j+1]=pxby[j+1]=py

}

j++

sx=pointx[i]

sy=pointy[i]

}

setcolor(color)

line(bx[j-1]+300,by[j-1]+200,bx[0]+300,by[0]+200)

setcolor(color)

for(m=0m<j-1m++)

{

line(bx[m]+300,by[m]+200,bx[m+1]+300,by[m+1]+200)

}

getch()

closegraph()

}

这是五裂悔边形含汪的~~四边形的谈源仔调用一函数就行了

#include <graphics.h>

main()

{

int drive,mode,i,j,m,n

drive=DETECT

initgraph(&drive,&mode,"")

i=getmaxx()

j=getmaxy()

m=i/2

n=j/2

cleardevice()

line(m,n-38.5,m-40,n-9)

line(m,n-38.5,m+40,n-9)

line(m-40,n-9,m-25,n+38.5)

line(m+40,n-9,m+25,n+38.5)

line(m-25,n+38.5,m+25,n+38.5)

getch()

closegraph()

}

下面是实现图形程序独立运行的具体步骤:

1.将驱动程序EGAVGA.BGI转换成目标文件EGAVGA.OBJ:

C:\TC>BGIOBJ EGAVGA

(在这里,我的tc目录下面没有*.BGI的文件,到哪里可以找到?

还有进入dos方式后,在tc的目录下面执行命令BGIOBJ EGAVGA,得到以下输出,我该怎么办?

'bgiobj' 不是内部或外部命令,也不是可运行的程序

或批处理文件。)

下面的步骤就没有试了…………大家帮帮忙啊,^_^

按同样乱袜的办法,将字体文件*.CHR转换成目标文件*.OBJ:

C:\TC>BGIOBJ TRIP

C:\TC>BGIOBJ LITT

C:\TC>BGIOBJ SANS

C:\TC>BGIOBJ GOTH

2.将上述建立的OBJ文件加入到GRAPHICS.LIB库文件中,具体方法如下:

C:\TC>TLINK C:\TC\LIB\GRAPHICS.LIB+EGAVGA

C:\TC>TLINK C:\TC\LIB\GRAPHICS.LIB+TRIP

C:\TC>TLINK C:\TC\LIB\GRAPHICS.LIB+LITT

C:\TC>TLINK C:\TC\LIB\GRAPHICS.LIB+SANS

C:\TC>TLINK C:\TC\LIB\GRAPHICS.LIB+GOTH

也可以使用TLIB、PRJ程序代替TLINK。

3.在程序中调用initgraph()函数前,应加上如下语句:

registerbgidriver(EGAVGA-driver);

它通知连接程序把EGAVGA驱动程序装入用户的执行程序中,同样在哗带装入字体文件之前要加上如下语句:

registerbgifont(字体文件名);

4.通过上述处理后,编译连接后的执行程序就可以在任何目录下运哗芦激行了。这时,将屏幕初始化为图形模式的函数可改写为:

void InitGra(void)

{int GD=DETECT,GM <br> registerbgidriver(EGAVGA_driver); <br> registerbgifont(triplex_font); <br> registerbgifont(small_font) <br> registerbgifont(sansserif_font) <br> registerbgifont(gothic_font) <br> initgraph(&GD,&GM,"") <br> }

按照以上步骤,就能实现图形程序的独立运行,在Turbo C2.0、Borland C++2.0、Borland C++3.1下均运行通过。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8227001.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存