#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
}
换账号再来回答,veket的小号。。。
.......用了ege图形库.........纯体力活.........
源代码....demo.cpp.....
/////////////////////////////////////////
// ege 0.3.8
// MinGW g++ 3.4.2
// veket的小号
/////////////////////////////////////////
#include "graphics.h"
#include <stdio.h>
const int YLEN = 50
const int XLEN = 40
const int WIDTH = 10*XLEN
const int HEIGHT = 2*YLEN
const int 桐或XWIDTH = 640
const int YHEIGHT = 480
int main()
{
int x1, y1, x2, y2, x, y
char strbuf[100]
int i
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=0x<=x1+WIDTHx+=2*XLEN,i+=2)
{
sprintf(strbuf, "%d\0", i)
outtextxy(x, y, strbuf)
}
for(x=x1x<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=0x<=x1+WIDTHx+=2*XLEN,i+=2)
{
sprintf(strbuf, "%d\0", i)
outtextxy(x, y, strbuf)
}
for(x=x2x<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()
return 0
}
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 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--
}
}
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)