通过canvas实现描点连线功能

先上图

<canvas id="canvas" width="1400" height="800" style="background:white;"><canvas>

  

 var arr = [{
                        NO: 0,
                        name: "p0",
                        x: 854,
                        y: 96
                    },
                    {
                        NO: 1,
                        name: "p1",
                        x: 854,
                        y: 180
                    },
                    {
                        NO: 2,
                        name: "p2",
                        x: 704,
                        y: 210
                    },
                    {
                        NO: 3,
                        name: "p3",
                        x: 644,
                        y: 260
                    },
                    {
                        NO: 4,
                        name: "p4",
                        x: 334,
                        y: 296
                    },
                    {
                        NO: 5,
                        name: "p5",
                        x: 204,
                        y: 506
                    },
                    {
                        NO: 6,
                        name: "p5",
                        x: 234,
                        y: 516
                    },
                    {
                        NO: 7,
                        name: "p5",
                        x: 294,
                        y: 506
                    },
                    {
                        NO: 8,
                        name: "p5",
                        x: 394,
                        y: 506
                    },
                    {
                        NO: 9,
                        name: "p5",
                        x: 488,
                        y: 506
                    },
                    {
                        NO: 10,
                        name: "p5",
                        x: 552,
                        y: 506
                    },
                    {
                        NO: 11,
                        name: "p5",
                        x: 676,
                        y: 506
                    },
                    {
                        NO: 12,
                        name: "p5",
                        x: 680,
                        y: 606
                    },
                    {
                        NO: 13,
                        name: "p5",
                        x: 600,
                        y: 590
                    },
                    {
                        NO: 14,
                        name: "p5",
                        x: 608,
                        y: 560
                    },
                    {
                        NO: 15,
                        name: "p5",
                        x: 580,
                        y: 570
                    },
                    {
                        NO: 16,
                        name: "p5",
                        x: 570,
                        y: 570
                    },
                    {
                        NO: 17,
                        name: "p5",
                        x: 560,
                        y: 570
                    },
                    {
                        NO: 18,
                        name: "p5",
                        x: 550,
                        y: 570
                    }
                ]


var context = canvas.getContext('2d')

function draw() {
                    context.clearRect(0, 0, canvas.width, canvas.height)
                    context.beginPath()
                    context.moveTo(arr[0].x, arr[0].y)
                
                    context.stroke()
                    context.beginPath()
                    context.moveTo(arr[0].x, arr[0].y)
                   

                    for (var j = 0; j < arr.length; j++) {

                        context.lineTo(arr[j].x, arr[j].y)
                    }
                    
                    context.stroke()

                    for (var k = 0; k < arr.length; k++) {
                        console.log(arr[k].name)
                        drawDot(arr[k], color16())
                    }
                    
                    drawDot(control, 'red')
                }

function color16() { //十六进制颜色随机
                    var r = Math.floor(Math.random() * 256);
                    var g = Math.floor(Math.random() * 256);
                    var b = Math.floor(Math.random() * 256);
                    var color = '#' + r.toString(16) + g.toString(16) + b.toString(16);
                    return color;
                }

                function drawDot(pos, color) {
                    context.beginPath()
                
                    var fillImg = new Image();
                    fillImg.src = '2.png';
                    fillImg.onload = function () {
                        context.drawImage(fillImg, pos.x, pos.y, 10, 15);
                    }
                    context.closePath()
                    context.fill()
                    context = canvas.getContext("2d");
                    context.font = "15px 微软雅黑"; //字体
                    context.textBaseline = "middle"; //竖直du对齐
                    context.textAlign = "center"; //水平对zhi齐 
                    context.fillStyle = color;
                    context.fillText(pos.NO, pos.x, pos.y, 15);

                }

                function captureMouse(element) {
                    var mouse = {
                        x: 0,
                        y: 0
                    }
                    element.addEventListener('mousemove', function (event) {
                        var x = event.pageX - element.offsetLeft
                        var y = event.pageY - element.offsetTop
                        mouse.x = x
                        mouse.y = y
                    })
                    return mouse
                }

  

原文地址:https://www.cnblogs.com/h5it/p/14489585.html