zrender学习

这个是项目总结,不适合学习

 

<div id="canvas" style="background-image:url(./canvasbg.gif)"></div>

定义zrender初始化对象,背景是一个gif图

样式如下 ↓

 

工程里, topo.html 

<div id = "container">
画布
                #container{
                     /* width: calc(83.5% - 200px); */
                     width: calc(83.5%);  /** calc是用来设置动态值 **/
                     height: calc(99% - 30px - 1%);
                     box-sizing: border-box;
                     border: 2px solid;
                     border-color: #0C554A;
                     overflow: hidden;
                     background-color: white;
                     float: left;
                     margin-right: 0.5%;
                }


在topo.html中初始化

 

<div id="div-canvas" style="overflow-x: hidden; overflow-y: hidden;"></div>

zrender初始化对象

 

 

画布背景图已经解决...现在开始学习起zrender

 

 

 

body{margin:0;}

margin控制元素外框与包含该元素的容器的边框距离。这句话让网页顶部顶到浏览器顶部,(默认是有一段空白的)。但是这么写会使网页也靠着浏览器左边,最好写成margin-top:0;margin-left:auto;

 

在topo-painter.js 324行

收到了后端数据,然后画出了zrender图像

 

步骤:先画一条母线

 

文档中初始化zrender是 : zrender.init(dom, opts)

 

现在的写法 :  var zr = zrender.init(document.getElementById('canvas')),

 

这样就得到了一个初始化的zrender对象,可以进行各种操作。

刚刚一直没有反应是因为那个傻逼用了自己定义的zrender.js。草他妈一直以为的是官方的js,别人拷过来的项目也不管用才知道的是那个傻逼把js改了。草他妈

 

要注意引入的js包,看一下成功代码

 

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>zrender测试</title>

     <script type="text/javascript" src="js/zrender.js"></script>

     <script type="text/javascript" src="js/esl.js"></script>

     <script type="text/javascript" src="js/prototype.min.js"></script>

     <style type="text/css">

     html, body{margin: 0;  height:100%; overflow-x: hidden; overflow-y: hidden;}

                #container{

                     /* width: calc(83.5% - 200px); */

                     width: calc(83.5%);  /** calc是用来设置动态值 **/

                     height: calc(99% - 30px - 1%);

                     box-sizing: border-box;

                     border: 2px solid;

                     border-color: #0C554A;

                     overflow: hidden;

                     background-color: white;

                     float: left;

                     margin-right: 0.5%;

                }          

     </style>

</head>

<body>

     <!--  定义一个zrender初始化的对象 -->

     <div  id ="container" >

           <div id="canvas"  class="canvas" style="height:100px;width:100px;" ></div>

     </div>

     <script type="text/javascript">

           //alert("123");

           var con = document.getElementById("container");

           //alert(con.getHeight());

         var zr = zrender.init(document.getElementById('canvas')),

          //window.alert("123"),

          h = zr.getHeight(),

             w = zr.getWidth(),

             line = new zrender.Line({

             shape: {

                 x1: 350,

                 y1: 100,

                 x2: 350,

                 y2: 600

             },

             style: {

                 stroke: 'black',

                 lineWidth: 5

             },

             draggable:true

         });

         zr.add(line);

     </script>

</body>

</html>

 

前台已经出现一个可拖拽的竖线。

第一个问题,背景是 container , zrender是canvas .container的宽高设置的动态值,canvas也要设置动态值,canvas不设置宽高,没有东西显示

canvas是画布,所有东西要放到里面才能显示。

 

那些器材设备先不管,

先把主要线路画出来...

比如谁的谁的子,谁是什么东西,赶紧画出来,还有递归,要重新写。 逻辑没问题。但是遍历,只遍历到第一个的时候,就跳到下一个了

花了将近一个小时,不出图,只是因为格式写错了,height:100px;  后面跟的是分号,我写的逗号。好无语

 


 

拿到了zrender初始化对象,现在要做的就是如何从后台拿到数据,传给zrender自动绘图。

 

zrender是怎么初始化,然后接收数据,最后在成图的呢? 请我们拭目以待。

 

topo-painter.js  361行,onload页面加载函数,页面加载完整之后,对zrender进行初始化。

1.获得背景的宽高,对zrender进行同 宽高 -2 放置

2.定义了鼠标选中移动,按下,弹起,滚轮的放大放小事件

(前端不是我的主力,没必要把精力放在这里,如何画出图,创造最效率的后台,是我的重心)

 

...

现在是自己画,不需要加绕组什么的,先把图做出来。,然后再添加素材

1.传什么数据过来,可以传List吗,还是传什么? //已经传了一个List过来,就要进行参数设置了

2.现在桌面已经成图了。可以慢慢先画着

 

 

 

当前有两个问题,

1.前面的是一个的,就会导致,后面会增长很多

 

 

2.当前上面是一个的,也会导致下面的长度增加

 

 

添加动画

绘制一条虚线,加上动画,在0.5秒的时间里绘制从0%到100%

 

 

 

 var line = new zrender.Line({  

       shape: {  

            x1:10,  

            y1:10,  

           x2:100,  

           y2:10,  

            percent:0  

        },  

        style: {  

            stroke:'#434348',  

            lineDash:[5,5]

        }

    });

    line.animate('shape', false)  

       .when(500, {  

           percent: 1  

        }).start();  

    zr.add(line);

 

当前就是一个动画,只不过上面的是虚线的动画

 

 

 

 

 

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值