javascript - Canvas如何绘制同心圆环

查看:94
本文介绍了javascript - Canvas如何绘制同心圆环的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

这个是最后的效果 即没有同心
我写的旋转部分

window.onload = function () {
    var canvas = document.createElement("canvas");
    document.getElementsByClassName("box")[0].appendChild(canvas);
    canvas.setAttribute("class", "img-1");
    canvas.setAttribute("width", "250px");
    canvas.setAttribute("height", "250px");

    draw(0.3, 125, 240, 2.8, 4.2, 5);

    canvas = document.createElement("canvas");
    document.getElementsByClassName("box")[0].appendChild(canvas);
    canvas.setAttribute("class", "img-1");
    canvas.setAttribute("width", "250px");
    canvas.setAttribute("height", "250px");
    draw(0.4, 125, 240, 0.6, 1.4, 5);

    canvas = document.createElement("canvas");
    document.getElementsByClassName("box")[0].appendChild(canvas);
    canvas.setAttribute("class", "img-2");
    canvas.setAttribute("width", "230px");
    canvas.setAttribute("height", "230px");
    draw(0.6, 115, 220, 0.8, 2.1, 5);

    function draw(alpha, frame, radius, start, end, line) {
        var context = canvas.getContext("2d");
        context.beginPath();
        context.strokeStyle = "#2BA3ED";
        context.lineCap = "square";
        context.globalAlpha = alpha;
        context.closePath();
        context.fill();
        context.lineWidth = line;
        context.putImageData(context.getImageData(0, 0, radius, radius), 0, 0);
        context.beginPath();
        context.arc(frame, frame, radius / 2, start, end, false);
        context.stroke();
    }
}

这里是绘制的所有代码
综上 我最后无法绘制出正确的效果,反复查验没有数值错误,是有什么我忽略的东西吗?

2017-7-31
我发现就像是250px这一环 或者115这样的就会不对 是我写的问题吗

解决方案

没时间解释了,看下面的代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>

    <style>
        .img{
            position: fixed;
            left: 0;
            top: 0;
        }
    </style>
</head>
<body>
    

<script>
window.onload = function () {
    var canvas = document.createElement("canvas");
    document.body.appendChild(canvas);
    
    
    canvas.setAttribute("class", "img");
    canvas.setAttribute("width", "300px");
    canvas.setAttribute("height", "300px");


    draw(0.3, 125, 100, 2.8, 4.2, 5);

    canvas = document.createElement("canvas");
    document.body.appendChild(canvas);
    canvas.setAttribute("class", "img");
    canvas.setAttribute("width", "300px");
    canvas.setAttribute("height", "300px");
    draw(0.4, 125, 150, 0.6, 1.4, 5);

    canvas = document.createElement("canvas");
    document.body.appendChild(canvas);
    canvas.setAttribute("class", "img");
    canvas.setAttribute("width", "300px");
    canvas.setAttribute("height", "300px");
    draw(0.6, 125, 200, 0.8, 2.1, 5);

    function draw(alpha, frame, radius, start, end, line) {
        var context = canvas.getContext("2d");
        context.beginPath();
        context.strokeStyle = "#2BA3ED";
        context.lineCap = "square";
        context.globalAlpha = alpha;
        context.closePath();
        context.fill();
        context.lineWidth = line;
        context.putImageData(context.getImageData(0, 0, radius, radius), 0, 0);
        context.beginPath();
        context.arc(frame, frame, radius / 2, start, end * Math.PI, false);
        context.stroke();
    }
}
</script>
</body>
</html>

这篇关于javascript - Canvas如何绘制同心圆环的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆