#include<stdlib.h>
#include<math.h>
int main()
{
float m,dx,dy,x,y,x_n,y_n,Cx,Cy
int n,i,j,L=4
int gdriver=DETECT,gmode//gdriver和gmode分别表示图形驱动器和模式,gdriver=DETECT是在测试显示器硬件
initgraph(&gdriver,&gmode,"")//初始化图形模式
setbkcolor(1)//设置背景色为蓝色
dx=3.0/639
dy=2.2/479
for(i=0i<639i++)
{
Cx=-1.9+i*dx
for(j=0j<479j++)
{
Cy=-1.2+j*dy
x=y=0
for(n=0n<=1000n++)
{
x_n=x*x-y*y+Cx
y_n=2*x*y+Cy
m=x_n*x_n
if(m>L) break
x=x_n
y=y_n
}
putpixel(i,j,(int)(0.4*m)%16)//在指定位置画一像素(坐标(i,j),第三个计算式为画点的颜色)
}
}
getch()//任意键返回
closegraph()//关闭图形模式并返回文本模式
}
关于颜色的设置如下:
━━━━━━━━━━━━━━━━━━━━━━━━━━
符号常数 数值 含义 字符或背景
——————————————————————————
BLUE 1 兰 两者均可
GREEN 2 绿 两者均可
CYAN 3 青 两者均可
RED 4 红 两者均可
MAGENTA 5 洋红 两者均可
BROWN 6 棕 两者均可
LIGHTGRAY 7 淡灰 两者均可
DARKGRAY 8 深灰 只用于字符
LIGHTBLUE 9 淡兰 只用于字符
LIGHTGREEN 10 淡绿 只用于字符
LIGHTCYAN 11 淡青 只用于字符
LIGHTRED 12 淡红 只用于字符
LIGHTMAGENTA 13 淡洋红 只用于字符
YELLOW 14 黄 只用于字符
WHITE 15 白 只用于字符
BLINK 128 闪烁 只用于字符
#include<stdio.h>#include<graphics.h>
#include<conio.h>
#include<stdlib.h>
#include<bios.h>
#define NUM 10
#define Min(x,y) ((x)<(y)?(x):(y))
#define Max(x,y) ((x)>(y)?(x):(y))
void image_draw(char finename[13],int color)
int main(void)
{
int color
char filename[13]
clrscr()
window(20,8,60,12)
textattr(WHITE|BLUE*16)
clrscr()
cprintf("\n ENTER filename:")
cscanf("%s",filename)
cprintf("\n Enter picture color(2~15):")
cscanf("%d",&color)
image_draw(filename,color)
getch()
exit(0)
}
void image_draw(char *filename,int color)
{
int i, j, k, no_transformations, temp, xoffset, yoffset
int px, py, p_cum[7], flag=0, mo=1, dr=VGA
float a[NUM][7], f, p_sum=0, xscale, yscale
float newx=0, XMin=0, XMax=0, YMax=0, YMin=0, x=0, y=0
FILE *fin
char ch='-1'
if((fin=fopen(filename,"rb"))==NULL)
{
cprintf("\n File '%s' not found.",filename)
getch()
exit(0)
}
fscanf(fin,"%d",&no_transformations)
for(i=0i<no_transformationsi++)
{
for(j=0j<7j++)
{
fscanf(fin,"%f",&f)
a[i][j]=f
}
}
fclose(fin)
initgraph(&dr,&mo,"")
setbkcolor(1)
for(i=0i<no_transformationsi++)
{
p_sum+=a[i][6]
p_cum[i]=p_sum*32767
}
while (ch!=27)
{
for(i=0i<256i++)
{
temp=rand()
for(k=0k<no_transformations-1k++)
{
if(temp<p_cum[k])
break
}
newx=(a[k][0]*x+a[k][1]*y+a[k][4])
y=(a[k][2]*x+a[k][3]*y+a[k][5])
x=newx
if((flag==0)&&(i>15))
{
XMax=Max(x,XMax)XMin=Min(x,XMin)
YMax=Max(y,YMax)YMin=Min(y,YMin)
}
else
{
px=(x*xscale+xoffset)
py=(y*yscale+yoffset)
if((px>=0)&&(px<639)&&(py>=0)&&(py<349))
putpixel(px,349-py,color)
}
}
if(flag==0)
{
xscale=418/(XMax-XMin)
yscale=Min(315/(YMax-YMin),xscale/1.38)
if(yscale<xscale/1.38)
xscale=1.38*yscale
xoffset=320-(XMax+XMin)*xscale/2
yoffset=175-(YMax+YMin)*yscale/2
flag=1
}
if(bioskey(1)) ch=bioskey(0)
}
closegraph()
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)