随心所欲Ajax图形篇

- -本系列主要介绍一个简单的可以服务器户动绘图的Ajax希望各位喜欢:~~欧耶

首先简单介绍一下,这个画图主要是通过Ajax访问web页面返回的数据来画图,画图的方式

是在Div上绘制.我在编辑的时候加上了不少注疏如有不当欢迎直接~~

<HTML>
 <head>
  <meta http-equiv="Content-Type" content="text/html;   charset=gb2312">
  <script language="JavaScript">
var   rs="";
var   x0=0//x轴启时点
var   x1=0//x轴结束点
var   y0=100
var   y1=100
var size//宽度
var str=""

//var a=0
var i=0
var tempy=0//画x 轴y轴时用的
var tempx=0
var Open ="Start"//这个是程序的状态,包括start--启动时初始划数据,runtime--运行时
var Input=Open
var start=""
function GetData()
{

var http = new ActiveXObject("Microsoft.XMLHTTP");
http.open("POST","Server.aspx?LiuJia="+escape(Input),false);
http.send();
 str = unescape(http.responseText);
var SetupTemp = new Array();//得到设置的数组

 SetupTemp = str.split(",");
if(Open=="Start")//启动状态--第一次启动绝对进入该状态
{
 if(SetupTemp[0]=="pleaseWait......")//如果会传的数据为pleaseWait......那么就代表服务器还没有设置数据
 {
  cs.innerHTML="服务器未启动请稍等";
 }
 else
 {
 //请注意不能在这里画太多的象素

  cs.innerHTML=cs.innerHTML+drawLine(0,5,0,500,"blue",4);//画左竖线
  cs.innerHTML=cs.innerHTML+drawLine(0,499,1510,499,"blue",4);//画下低横线
  tempy=470/10
  for(i;i<11;i++)//画左竖线的刻度尺
  {
   if(i==5)//设置中心点
   {
    
   
    y0=tempy*i+26//设置画折线的起始位置未当前上政指数就是刚刚开盘的时候
    y1=tempy*i+26
    
    cs.innerHTML=cs.innerHTML+drawLineAddString(3,tempy*i+10,5,tempy*i+10,"shamrock`",1,SetupTemp[0])//,SetupTemp[0]上政指数
   }
   else if(i<5)//画上半区刻度
   {
   cs.innerHTML=cs.innerHTML+drawLineAddString(3,tempy*i+10,5,tempy*i+10,"shamrock`",1,SetupTemp[0]*(11-i))
   }
   else//画下半区刻度
   {
      cs.innerHTML=cs.innerHTML+drawLineAddString(3,tempy*i+10,5,tempy*i+10,"shamrock`",1,"")
   }
  }
  tempx=1000/15//画x轴刻度
  cs.innerHTML=cs.innerHTML+drawLineAddString(tempx*2,500-20,tempx*2,500-20,"shamrock`",4,1)
  cs.innerHTML=cs.innerHTML+drawLineAddString(tempx*4,500-20,tempx*4,500-20,"shamrock`",4,2)
  cs.innerHTML=cs.innerHTML+drawLineAddString(tempx*6,500-20,tempx*6,500-20,"shamrock`",4,"Stop")//停盘
  cs.innerHTML=cs.innerHTML+drawLineAddString(tempx*8,500-20,tempx*8,500-20,"shamrock`",4,3)
  cs.innerHTML=cs.innerHTML+drawLineAddString(tempx*10,500-20,tempx*10,500-20,"shamrock`",4,4)
  
  
  //---画可能的初始化数据---如果不是在开盘时进入那么就必须画出开盘后到现在的线
  
  for(i=1;i<SetupTemp.length;i++)
  {
  
   
   setXOry(SetupTemp[i])
   canvas.innerHTML=canvas.innerHTML+drawLine(x0,y0,x1,y1,"red",3);
   
  }
  
  Input="0"
  Open="runtime"//处于运行时状态
  }
}
else//有数据返回就可以画
{

 


for(i=0;i<SetupTemp.length;i++)
  {
   //setXOry(SetupTemp[i])

 //实现了向下探1次平衡,向下探2次平横
 if(y0<496)//向下传投到x轴0点的时候不能在向下走
 {
 //在这里向下穿透不要调用1就可以不再画了
 //canvas.innerHTML=canvas.innerHTML+SetupTemp[0].valueOf()+"1<br>";
 
 setXOry(SetupTemp[i].valueOf())//直接调整画线坐标的函数//参数代表影响折线位置的 0-平,1-降-2升
 }
  if(x1<1500)//x轴未走到头的花可以继续走
 {
  canvas.innerHTML=canvas.innerHTML+drawLine(x0,y0,x1,y1,"red",3);
 }

}
 
}
setTimeout("GetData()",1000);
}


function setXOry(start)//调整画线坐标的函数
{

 if(start=="0")//向下
 {

  x0=x1
  x1=x1+3;
  a=1
  y0=y1
// if(b==1)//代表a=2的时候是还是向下探地这时候,必须修正 y轴的起始点和终点一致保证 ----a=2时划的斜线于 a=0的时候划的横线联合起来形成无断点图
 {
 
 
 //y0=y1
 //b=1

 //}//在这里b=1代表如果下一次直接绘制横县时也通知 a=0 修补y轴的起始点
}
else if(start=="1")//下降
{
 y0=y1//平衡y轴
 x0=x1
 x1=x1+3//移动y轴的终点
 y1=y1+3
 a=1//如果a=1可以持续向下画 ,=0代表向平行画
 b=1

}
else if(start=="3")//上升
{
 y0=y1//平衡y轴
 x0=x1//平衡x轴
 x1=x1+3
 y1=y1-3
 a=0

}
}

 

 

function   drawLineAddString(x0,y0,x1,y1,color,size,ConText)//倒数第二个参数是竖线的大小,倒数第一个参数为显示的文字
{
 rs   =   "<table   style='top:"+y0+";left:"+x0+";position:absolute'>"+ConText+"<td   bgcolor="+color+"   height="+size+" width="+Math.abs(x1-x0)+"></td></table>";
return rs
}

 

function   drawLine(x0,y0,x1,y1,color,size)//倒数第一个参数是竖线的大小
{

 if   (y0   ==   y1)     //画横线
 {
  rs   =   "<table   style='top:"+y0+";left:"+x0+";position:absolute'><td   bgcolor="+color+"   height="+size+" width="+Math.abs(x1-x0)+"></td></table>";
 }
 else   if   (x0   ==   x1)     //画竖线 
 { 
  rs   =   "<table   style='top:"+y0+";left:"+x0+";position:absolute'><td   bgcolor="+color+"   width=1 height="+Math.abs(y1-y0)+"></td></table>";
 }
 else
 {
 var   lx   =   x1-x0
 var   ly   =   y1-y0
 var   l   =   Math.sqrt(lx*lx+ly*ly)//Math.sqrt求平方里面的参数x长度和y轴的上度
 rs   =   new   Array();
 for   (var   I=0;I<l;I+=1)//我猜这是划斜线的时候所以他一个格一个的画
 {//l是要画的格子的总数,
  var   p   =   I/l;
  var   px   =   x0   +   lx*p;//从新计算每一个格子的x轴的起点
  var   py   =   y0   +   ly*p;//y轴的起点
  rs[rs.length]   =   "<table   style='top:"+py+";left:"+px+";position:absolute'><td   bgcolor="+color+" height="+size+"></td></table>";
 }
 rs   =   rs.join("");
}
return   rs
}

 


</script>
 </head>
 <body text="#66ffff" bgColor="#808080" οnlοad="GetData()">
  <form name="111">
   <div id="cs2"></div>
   <div id="canvas"></div>
   <div id="cs"></div>
  </form>
 </body>
</HTML>

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值