js绘图

< html >
< head >
< title > JavaScript绘图 </ title >
< script language ="JavaScript" > ...
IE4
=!(navigator.appVersion.charAt(0)<"4"||navigator.appName=="Netscape")

varxo=0
varyo=0
varOx=-1
varOy=-1

varrad=Math.PI/180
varmaxY=400
varcolor="red"

functionprint(str)...{
document.write(str)
}


functionorgY(y)...{
returnmaxY-y
}

functionoutPlot(x,y,w,h)...{
print(
'<spanstyle="position:absolute;left:'+x+';top:'+y+';height:'+h+';width:'+w+';font-size:1px;background-color:'+color+'"></span>')
}


functionPlot(x,y)...{
outPlot(x,y,
1,1)
if(Ox>=0||Oy>=0)...{
ShowLine(Ox,Oy,x
-Ox,y-Oy)
}

Ox
=x
Oy
=y
}


functionShowLine(x,y,w,h)...{
if(w<0)...{
x
+=w
w
=Math.abs(w)
}

if(h<0)...{
y
+=h
h
=Math.abs(h)
}

if(w<1)w=1
if(h<1)h=1
outPlot(x,y,Math.round(w),Math.round(h))
}


functionLineTo(x,y)...{
Line(xo,yo,x,y)
}


functionsign(n)...{
if(n>0)
return1
if(n<0)
return-1
returnn
}


functionLine(x1,y1,x2,y2)...{
x2
=Math.round(x2)
y2
=Math.round(y2)
xo
=x2
yo
=y2
y1
=orgY(y1)
y2
=orgY(y2)
varstr=""
vari=0

varx=x1
vary=y1
dx
=Math.abs(x2-x1)
dy
=Math.abs(y2-y1)
s1
=sign(x2-x1)
s2
=sign(y2-y1)

if(dx==0||dy==0)...{
ShowLine(x1,y1,x2
-x1,y2-y1)
return
}


if(dx>dy)...{
temp
=dx
dx
=dy
dy
=temp
key
=1
}
else
key
=0
e
=2*dy-dx

for(i=0;i<dx;i++)...{
px
=0
py
=0
Plot(x,y)
while(e>=0)...{
if(key==1)...{
x
+=s1
px
+=s1
}
else...{
y
+=s2
py
+=s2
}

e
=e-2*dx
}

if(key==1)
y
+=s2
else
x
+=s1
e
=e+2*dy
}

}


functionMoveTo(x,y)...{
Ox
=Oy=-1
xo
=Math.round(x)
yo
=Math.round(y)
}


//
functionCir(x,y,r)...{
MoveTo(x
+r,y)
for(i=0;i<=360;i+=5)...{
LineTo(r
*Math.cos(i*rad)+x,r*Math.sin(i*rad)+y)
}

}

//弧形
functionArc(x,y,r,a1,a2)...{
MoveTo(r
*Math.cos(a1*rad)+x,r*Math.sin(a1*rad)+y)
for(i=a1;i<=a2;i++)...{
LineTo(r
*Math.cos(i*rad)+x,r*Math.sin(i*rad)+y)
}

}

//扇形
functionPei(x,y,r,a1,a2)...{
MoveTo(x,y)
for(vari=a1;i<=a2;i++)...{
LineTo(r
*Math.cos(i*rad)+x,r*Math.sin(i*rad)+y)
}

LineTo(x,y)
}

//弹出扇形
functionPopPei(x,y,r,a1,a2)...{
dx
=r*Math.cos((a1+(a2-a1)/2)*rad)/10
dy
=r*Math.sin((a1+(a2-a1)/2)*rad)/10
x
+=dx
y
+=dy
MoveTo(x,y)
for(vari=a1;i<=a2;i++)...{
LineTo(r
*Math.cos(i*rad)+x,r*Math.sin(i*rad)+y)
}

LineTo(x,y)
}


//矩形
functionRect(x,y,w,h)...{
MoveTo(x,y)
LineTo(x
+w,y)
LineTo(x
+w,y+h)
LineTo(x,y
+h)
LineTo(x,y)
}


//准星
functionzhunxing(x,y)...{
varox=xo
varoy=yo
varoColor=color
color
="#000000"
Line(x
-5,y,x+6,y)
Line(x,y
-6,x,y+5)
print(
'<spanstyle="position:absolute;font-size:10pt;left:'+(x+5)+';top:'+orgY(y+5)+';">['+x+','+y+']</span>')
color
=oColor
xo
=ox
yo
=oy
}

//标注
functionbiaozhuStr(x,y,s)...{
return'<spanstyle="position:absolute;font-size:10pt;left:'+x+';top:'+orgY(y)+';">'+s+'</span>'
}

functionbiaozhu(x,y,s,t)...{
varox=xo
varoy=yo
varoColor=color
point
="p01.gif"
if(t==1)...{
print(biaozhuStr(x
-5,y+6,"·"+s))
}

if(t==2)...{
print(biaozhuStr(xo
+x*Math.cos(y*rad)-10,yo+x*Math.sin(y*rad),s))
}

color
=oColor
xo
=ox
yo
=oy
}

</ script >
</ head >

< body >
< table border ="0" width ="100%" >
< tr >
< td width ="100%" style ="font-family:方正舒体;font-size:18pt;color:#FF0000" class ="t1" > JavaScript绘图 </ td >
</ tr >
< tr >
< td width ="100%" style ="font-family:幼圆;font-size:12pt;color:#008000" class ="t2" >
如果需要在网页上提供图形化的资料,通常是将其制作成图片,但这样一来网络上的开销就太大了。有什么办法呢?这里向你提供一组JavaScript函数,来解决这一问题。虽然简单了点,但是对画点线图来说还是绰绰有余的!
</ td >
</ tr >
</ table >

< script > ...
if(IE4)...{

//基本图形
color="maroon"
Cir(
50,40,20)
Arc(
100,40,20,60,120)
Pei(
150,60,40,240,300)
Rect(
200,20,40,40)

//折线图
color="#FF0000"
varjd=newArray(
203,232,277,223,271,234,273,284,276,250,267,280
)
MoveTo(
30,jd[0]-40)
biaozhu(xo,yo,jd[
0])
for(i=1;i<jd.length;i++)...{
LineTo(i
*30+30,jd[i]-40)
biaozhu(xo,yo,jd[i],
1)
}

color
="#C0C0C0"
Line(
30,140,i*30+30,140)
Line(
30,140,30,260)

//饼图
color="#00FF00"
vargc=newArray(
150,120,200,180,180
)
vars=0
varm=0
varn=0
for(i=0;i<gc.length;i++)...{
s
+=gc[i]
if(gc[i]>m)...{
m
=gc[i]
n
=i
}

}

vark=s/360
varmm=0
vara=0
for(i=0;i<gc.length;i++)...{
b
=Math.round((gc[i]+mm)/k)
if(i==n)
PopPei(
600,150,100,a,b)
else
Pei(
600,150,100,a,b)
biaozhu(
60,a+(b-a)/2,Math.round(gc[i]/s*100)+"%",2)
mm
=mm+gc[i]
a
=b
}


//十字标注
MoveTo(280,20)
zhunxing(xo,yo)

}
else...{
document.write(
"<p></p><tablebgcolor=#FF0000><tr><td><fontcolor=#FFFF00>对不起!您的浏览器不能支持该页的某些功能,请换用IE4.0以上版本的浏览器!谢谢!</font></td></tr></table>")
}

</ script >

</ body >
</ html >
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值