#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下均运行通过。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)