>  기사  >  php教程  >  d3.js画矢量图+可拖拽的实现思路

d3.js画矢量图+可拖拽的实现思路

WBOY
WBOY원래의
2016-06-01 09:46:431878검색

d3.js可以画矢量图不难,难在如何拖拽,其实jquery甚至easyui都提供了draggable的拖放方法,只需要在拖动一个div的drop事件执行的时候重新绘制line即可,实现起来就太简单了,用来做代码生成器或报表工具或工作流简直爽哉!!! 我也可以融合到我的easydragger开源软件里,形成新的更加强大的产品,鸟无翅不可飞,车无轮不可跑,代码设计器无矢量图就是垃圾,无法导向人脑的认知系统,大家祝愿我完成吧,然后让各位早些下载下来用用。接下来我拖拽将进行。祈祷吧。世界终会安宁。

<code class="language-html">  
    
        <meta charset="utf-8">  
        <title>Arrow</title>  
   
  
<script src="d3.v3.min.js" charset="utf-8"></script>  
<script> 
  
var width  = 400;
var height = 400;
     
var svg = d3.select("body").append("svg")
        .attr("width", width)
        .attr("height", height);
         
var defs = svg.append("defs");
  
var arrowMarker = defs.append("marker")
                        .attr("id","arrow")
                        .attr("markerUnits","strokeWidth")
                        .attr("markerWidth","12")
                        .attr("markerHeight","12")
                        .attr("viewBox","0 0 12 12") 
                        .attr("refX","6")
                        .attr("refY","6")
                        .attr("orient","auto");
  
var arrow_path = "M2,2 L10,6 L2,10 L6,6 L2,2";
                         
arrowMarker.append("path")
            .attr("d",arrow_path)
            .attr("fill","#000");
  
var line = svg.append("line")
             .attr("x1",0)
             .attr("y1",0)
             .attr("x2",200)
             .attr("y2",50)
             .attr("stroke","red")
             .attr("stroke-width",2)
             .attr("marker-end","url(#arrow)");
  
var curve_path = "M20,70 T80,100 T160,80 T200,90";
  
var curve = svg.append("path")
             .attr("d",curve_path)
             .attr("fill","white")
             .attr("stroke","red")
             .attr("stroke-width",2)
             .attr("marker-start","url(#arrow)")
             .attr("marker-mid","url(#arrow)")
             .attr("marker-end","url(#arrow)");
              
  
</script>  
  
  </code>

 

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.