js画图

本文介绍了一个简单的JavaScript图形库JS2D,该库提供了一系列用于在网页上绘制图形的基本函数,包括画点、直线、矩形、椭圆和多边形等。这些函数可以帮助开发者轻松地在网页上实现基本的图形绘制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

<script Language="javascript">

/****************** JS2D函数集  *******************<br />

  在引用或转载时请保留此版权信息,谢谢!!!<br />

<br />

  本函数集可以单独存成一个js文件:"JS2D.js"<br />

<br />

***************************************************/

/************* 画点 **************<br />

  x,y     点所在的屏幕坐标(像素)<br />

  color   颜色(字符串值)<br />

  size    大小(像素)<br />

**********************************/

function drawDot(x,y,color,size)

{

   document.write("<table border='0' cellspacing=0 cellpadding=0><tr><td style='position: absolute; left: "+x+";

top: "+y+    ";background-color: "+color+"' width="+size+" height="+size+"></td></tr></table>");

}

/************* 画直线 **************<br />

  x1,y1   起点所在的屏幕坐标(像素)<br />

  x2,y2   终点所在的屏幕坐标(像素)<br />

  color   颜色(字符串值)<br />

  size    大小(像素)<br />

  style   样式<br />

          =0    实线<br />

          =1    虚线<br />

          =2    虚实线<br />

**********************************/

function drawLine(x1,y1,x2,y2,color,size,style)

{

  var i;

  var r=Math.floor(Math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)));

  var theta=Math.atan((x2-x1)/(y2-y1));

  if((y2-y1)<0&&(x2-x1)<0)//第三象限

    theta=Math.PI+theta;

  else if((y2-y1)>0&&(x2-x1)<0)//第二象限

   theta=2*Math.PI+theta;

  else if((y2-y1)<0&&(x2-x1)>0)//第四象限

   theta=Math.PI+theta;

  var dx=Math.sin(theta);//alert(dx)<br />

  var dy=Math.cos(theta);

  for(i=0;i<r;i++)

  {

    switch(style)

 {

      case 0:

        drawDot(x1+i*dx,y1+i*dy,color,size);

        break;

      case 1:

        i+=size*2;

        drawDot(x1+i*dx,y1+i*dy,color,size);

        break;

      case 2:

        if(Math.floor(i/4/size)%2==0)

  {

          drawDot(x1+i*dx,y1+i*dy,color,size);

        }

        else

  {

            i+=size*2;

            drawDot(x1+i*dx,y1+i*dy,color,size);

        }

        break;

      default:

        drawDot(x1+i*dx,y1+i*dy,color,size);

        break;

    }

  }

}

/************* 画实心矩形 **************<br />

  x1,y1   起点(矩形左上角)所在的屏幕坐标(像素)<br />

  x2,y2   终点(矩形右下角)所在的屏幕坐标(像素)<br />

  color   颜色(字符串值)<br />

**********************************/

function drawFilledRect(x1,y1,x2,y2,color)

{

  document.write("<table border='0' cellspacing=0 cellpadding=0><tr><td style='position: absolute; left: "+(x1)+"; top: "+

(y1)+";background-color: "+color+"' width="+(x2-x1)+" height="+(y2-y1)+"></td></tr></table>")

}

/************* 画矩形 **************<br />

  x1,y1   起点(矩形左上角)所在的屏幕坐标(像素)<br />

  x2,y2   终点(矩形右下角)所在的屏幕坐标(像素)<br />

  color   颜色(字符串值)<br />

  size    大小(像素)<br />

  style   样式<br />

          =0    实线<br />

          =1    虚线<br />

          =2    虚实线<br />

**********************************/

function drawRect(x1,y1,x2,y2,color,size,style)

{

  drawLine(x1,y1,x2,y1,color,size,style);

  drawLine(x1,y2,x2,y2,color,size,style);

  drawLine(x1,y1,x1,y2,color,size,style);

  drawLine(x2,y1,x2,y2,color,size,style);

}

/************* 画椭圆 **************<br />

  x,y         中心所在的屏幕坐标(像素)<br />

  a,b         长轴和短轴的长度(像素)<br />

  color       颜色(字符串值)<br />

  size        大小(像素)<br />

  precision   边缘精细度<br />

**********************************/

function drawOval(x,y,a,b,color,size,precision)

{

  var i;

  var iMax=2*Math.PI;

  var step=2*Math.PI/(precision*Math.sqrt(a*b)*4.5);

  for(i=0;i<iMax;i+=step)

  {

    drawDot(x+a*Math.cos(i),y+b*Math.sin(i),color,size);

  }

}

/************* 画多边形 **************<br />

  x,y     中心所在的屏幕坐标(像素)<br />

  r       多边形外接圆半径(像素)<br />

  n       多边形的边数<br />

  color   颜色(字符串值)<br />

  size    大小(像素)<br />

  style   样式<br />

          =0    实线<br />

          =1    虚线<br />

          =2    虚实线<br />

**********************************/

function drawPoly(x,y,r,n,color,size,style)

{

  var i;

  var theta=Math.PI;

  var x1=x,y1=y-r,x2,y2;

  for(i=0;i<n;i++)

  {

    theta-=(2*Math.PI/n);

    x2=x+r*Math.sin(theta);

    y2=y+r*Math.cos(theta);

    drawLine(x1,y1,x2,y2,color,size,style);

    x1=x2;

    y1=y2;//alert(x1+" "+y1)<br />

  }

}

</script>

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值