js绘图库raphael实例

模拟微步

技术分享
<!DOCTYPE html>
<html>
<head>
<style type="text/css">
body {
    text-align: center;
}
#canvas {
    background-color: pink;
    margin: 0 auto;
    width: 80%;
    height: 100px;
}
</style>
<script type="text/javascript" src="raphael.js"></script>
<script type="text/javascript">
var canvas = null;
var paper = null;
var nodes = [];
var links = [];
var col_width = 100;
var row_height = 100;
var node_count = 100;
window.onload = function() {
    canvas = document.getElementById(canvas);
    paper = Raphael(canvas);
    initNodes();
    initLinks();
    func1();
};
window.onresize = function() {
    func1();
};
function initNodes() {
    for (var i = 0; i < node_count; i++) {
        var node = {};
        node.shape = paper.circle(50, 50, 20, 20);
        node.text = paper.text(50, 50, i);
        nodes.push(node);
    }
}
function initLinks() {
    for (var i = 0; i < nodes.length; i++) {
        if (i == nodes.length - 1) break;
        var n = nodes[i];
        var n1 = nodes[i+1];
        var path = [
            ["M", n.shape.attr("cx"), n.shape.attr("cy")],
            ["L", n1.shape.attr("cx"), n1.shape.attr("cy")]
        ];
        links.push(paper.path(path).attr({stroke: "green", "stroke-width": 2}));
    }
}
function setNodes() {
    for (var i = 0; i < nodes.length; i++) {
        var n = nodes[i];
        //n.shape.translate(i*50, 50);
        //n.text.translate(i*50, 50);
        n.shape.attr({cx: i*50, cy: 50});
        n.text.attr({x: i*50, y: 50});
    }
}
function setLinks() {
    for (var i = 0; i < nodes.length; i++) {
        if (i == nodes.length - 1) break;
        var n = nodes[i];
        var n1 = nodes[i+1];
        var path = [
            ["M", n.shape.attr("cx"), n.shape.attr("cy")],
            ["L", n1.shape.attr("cx"), n1.shape.attr("cy")]
        ];
        links[i].attr({path: path});
    }
}
function func1() {
    var canvas_width = canvas.offsetWidth;
    var row_node_count = parseInt(canvas_width / col_width);
    var row_count = parseInt(node_count / row_node_count) + 1;
    var canvas_height = row_height * row_count;
    //alert(canvas_width);
    canvas.style.height = canvas_height + px;
    paper.setSize(canvas_width, canvas_height);
    //paper.clear();
    //paper.rect(10, 10, canvas_width-40, canvas_height-20);
    var k = 0;
    for (var i = 0; i < row_count; i++) {
        if (i % 2 == 0) {
            for (var j = 0; j < row_node_count; j++) {
                if (k == node_count) break;
                nodes[k].shape.attr({cx: j*col_width + col_width/2, cy: i*row_height + row_height/2});
                nodes[k].text.attr({x: j*col_width + col_width/2, y: i*row_height + row_height/2});
                k++;
            }
        } else {
            for (var j = row_node_count-1; j >= 0; j--) {
                if (k == node_count) break;
                nodes[k].shape.attr({cx: j*col_width + col_width/2, cy: i*row_height + row_height/2});
                nodes[k].text.attr({x: j*col_width + col_width/2, y: i*row_height + row_height/2});
                k++;
            }
        }
    }
    setLinks();
}
</script>
</head>
<body>
<div id="canvas">
</div>
</body>
</html>
View Code

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。