JS画图,(矩形,曲线,圆 等)

 <html>   
  <head>   
  <title>JavaScript绘图</title>   
  <script   language="JavaScript">   
  IE4   =   !   (navigator.appVersion.charAt(0)   <   "4"   ||   navigator.appName   ==   "Netscape")   
    
  var   xo=0   
  var   yo=0   
  var   Ox   =   -1   
  var   Oy   =   -1   
    
  var   rad   =   Math.PI/180   
  var   maxY   =   400   
  var   color   =   "red"   
    
  function   print(str)   {   
  document.write(str)   
  }   
    
  function   orgY(y)   {   
  return   maxY-y   
  }   
  function   outPlot(x,y,w,h)   {   
  print('<span   style="position:absolute;left:'+x+';top:'+y+';height:'+h+';width:'+w+';font-size:1px;background-color:'+color+'"></span>')   
  }   
    
  function   Plot(x,y)   {   
  outPlot(x,y,1,1)   
  if(Ox>=0   ||   Oy>=0)   {   
  ShowLine(Ox,Oy,x-Ox,y-Oy)   
  }   
  Ox   =   x   
  Oy   =   y   
  }   
    
  function   ShowLine(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))   
  }   
    
  function   LineTo(x,y)   {   
  Line(xo,yo,x,y)   
  }   
    
  function   sign(n)   {   
  if(n>0)   
  return   1   
  if(n<0)   
  return   -1   
  return   n   
  }   
    
  function   Line(x1,y1,x2,y2)   {   
  x2   =   Math.round(x2)   
  y2   =   Math.round(y2)   
  xo   =   x2   
  yo   =   y2   
  y1   =   orgY(y1)   
  y2   =   orgY(y2)   
  var   str   =   ""   
  var   i=0   
    
  var   x   =   x1   
  var   y   =   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   
  }   
  }     
    
  function   MoveTo(x,y)   {   
  Ox   =   Oy   =   -1   
  xo   =   Math.round(x)   
  yo   =   Math.round(y)   
  }   
    
  //   圆   
  function   Cir(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)   
  }   
  }   
  //   弧形   
  function   Arc(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)   
  }   
  }   
  //   扇形   
  function   Pei(x,y,r,a1,a2)   {   
  MoveTo(x,y)   
  for(var   i=a1;i<=a2;i++)   {   
  LineTo(r*Math.cos(i*rad)+x,r*Math.sin(i*rad)+y)   
  }   
  LineTo(x,y)   
  }   
  //   弹出扇形   
  function   PopPei(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(var   i=a1;i<=a2;i++)   {   
  LineTo(r*Math.cos(i*rad)+x,r*Math.sin(i*rad)+y)   
  }   
  LineTo(x,y)   
  }   
    
  //   矩形   
  function   Rect(x,y,w,h)   {   
  MoveTo(x,y)   
  LineTo(x+w,y)   
  LineTo(x+w,y+h)   
  LineTo(x,y+h)   
  LineTo(x,y)   
  }   
    
  //   准星   
  function   zhunxing(x,y)   {   
  var   ox   =   xo   
  var   oy   =   yo   
  var   oColor   =   color   
  color   =   "#000000"   
  Line(x-5,y,x+6,y)   
  Line(x,y-6,x,y+5)   
  print('<span   style="position:absolute;font-size:10pt;left:'+(x+5)+';top:'+orgY(y+5)+';">['+x+','+y+']</span>')   
  color   =   oColor   
  xo   =   ox   
  yo   =   oy   
  }   
  //   标注   
  function   biaozhuStr(x,y,s)   {   
  return   '<span   style="position:absolute;font-size:10pt;left:'+x+';top:'+orgY(y)+';">'+s+'</span>'   
  }   
  function   biaozhu(x,y,s,t)   {   
  var   ox   =   xo   
  var   oy   =   yo   
  var   oColor   =   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)   
  Line(0,0,20,20)   
  //   折线图   
  color   =   "#FF0000"   
  var   jd   =   new   Array(   
  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"   
  var   gc   =   new   Array(   
  150,120,200,180,180   
  )   
  var   s   =   0   
  var   m   =   0   
  var   n   =   0   
  for(i=0;i<gc.length;i++)   {   
  s   +=gc[i]   
  if(gc[i]   >   m)   {   
  m   =   gc[i]   
  n   =   i   
  }   
  }   
  var   k   =   s/360   
  var   mm   =   0   
  var   a   =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><table   bgcolor=#FF0000><tr><td><font   color=#FFFF00>对不起!您的浏览器不能支持该页的某些功能,请换用IE4.0以上版本的浏览器!谢谢!</font></td></tr></table>")   
  }   
  </script>   
    
  </body>   
  </html>

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: 首先,我们需要使用编程语言或者绘图软件来绘制一个矩形矩形有四条边和四个顶点,可以使用直线或者多边形来绘制。 根据需求,我们可以通过调整矩形的定位,大小和颜色等参数来实现不同的效果。例如,可以通过修改矩形的坐标来改变它在屏幕上的位置;可以通过调整宽度和高度来改变它的大小;可以通过修改填充颜色和边框颜色等来改变它的样式。 接下来,我们需要将矩形旋转。旋转是一个基本的二维变换操作,可以通过一定的数学公式来实现。在计算机图形学中,通常使用矩阵来表示变换操作,因此我们可以使用旋转矩阵来实现矩形的旋转。 旋转矩阵可以表示为: cosθ -sinθ sinθ cosθ 其中,θ表示旋转角度。我们需要将矩形的坐标点依次通过旋转矩阵进行变换,以实现矩形的旋转。具体来说,对于每个点(x,y),我们可以通过以下公式来计算它旋转后的坐标(x',y'): x' = x*cosθ - y*sinθ y' = x*sinθ + y*cosθ 在应用旋转变换时,需要注意坐标系的变化。通常情况下,坐标系原点在左上角,向右为x正方向,向下为y正方向。但是,在应用旋转变换后,坐标系通常会发生改变,因此我们需要进行适当的坐标系转换,以确保旋转后的矩形正确地显示在屏幕上。 最后,我们可以在绘制好的矩形上应用旋转变换,以实现矩形的旋转效果。这样,我们就可以得到一个既简单又实用的画图矩形并旋转的方法。 ### 回答2: 要画一个矩形并旋转它,我们需要首先选择绘图工具,例如常用的绘图软件如Photoshop或Illustrator。在软件中打开新的画布或现有的图像,选择矩形绘制工具,并用鼠标或轨迹球拖动绘制一个矩形形状。 接着,我们需要选择旋转工具。旋转工具通常在“编辑”或“变换”菜单中,可以通过键盘快捷键“Ctrl+T”快速访问。使用旋转工具,我们可以将矩形以任意角度旋转。在现代绘图软件中,一般通过鼠标或触摸板轻松操作就可以实现旋转。 完成绘制和旋转后,我们需要保存或导出图像。在软件中选择“文件”菜单,然后选择“保存”或“另存为”,并输入文件名、格式和位置,即可完成保存。 总的来说,画一个矩形并旋转它可以说是绘图技术入门的基本练习,是许多数字设计师或艺术家的第一步。虽然软件和工具不断升级和改进,但这个基本动作的原理和方法却始终不变。 ### 回答3: 为了画矩形并旋转,我们可以采用许多不同的方法,但其中一种最简单的方法是使用计算机图形软件,比如Adobe Illustrator或Photoshop。 首先,我们可以使用矩形工具在画布上绘制一个矩形。我们可以指定矩形的宽度和高度,并将其放置在所需的位置。如果需要,我们可以更改矩形的颜色或边框样式。这就是绘制一个简单的矩形的基本过程。 接下来,我们可以使用旋转工具在矩形上进行旋转。我们可以指定旋转角度,或使用鼠标拖动矩形进行旋转。在旋转之后,我们可以调整矩形的位置和大小,使其符合我们所需的要求。 此外,我们还可以创建多个矩形并将它们组合成形状。这可以通过将矩形路径合并或排除来实现。我们还可以利用变换工具将多个形状旋转和缩放,并使它们形成特定的模式或设计。 总之,矩形和旋转是制图时常用的一种技巧。我们可以使用不同的方法来处理它们,从而实现我们想要的结果。无论是在平面设计、建筑设计还是其他领域,这些技巧都是非常有用的。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值