在Chrome 18Dev +中。 Html5画布'createPattern'无法正确绘制图像

时间:2012-03-19 07:09:35

标签: html5 google-chrome canvas

这个问题只发生在Chrome 18Dev + .Version 17中。 应该是图案的区域用黑色填充。

以下是代码,您可以将其复制并在chrome中运行:

<!DOCTYPE HTML>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>clock</title>
    <style type="text/css">
        canvas{
            display:block;
            width:400px;
            height:400px;
            border:2px solid #000;
            margin:100px auto;
        }
    </style>
</head>
<body>
    <canvas id='c'></canvas>

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>
    <script type="text/javascript">
        var pic = new Image();
        $(function(){
            $(pic).load(function() {
                var canvas = document.getElementById('c');
                canvas.width = 400;
                canvas.height = 400;

                if (canvas.getContext) {
                    var ctx = canvas.getContext('2d');

                    ctx.fillStyle = ctx.createPattern(pic, 'repeat');


                    setInterval(function() {
                        ctx.clearRect(0, 0, canvas.width, canvas.height);
                        ctx.arc(canvas.width*0.5, canvas.height*0.5, 165, 0, Math.PI*2, false);
                        ctx.fill();
                    }, 1000);
                }
            });
        });
        pic.src = 'https://www.google.com.hk/images/nav_logo105.png';
    </script>
</body>

1 个答案:

答案 0 :(得分:0)

哦,我知道这个。

I reported it back in January, its still broken in Chrome Dev。看那里的最后评论。

事实证明,该模式将首次在标签中绘制。然后你必须关闭标签并重新制作以使其再次运行。刷新页面不会这样做。这是一个真正的痛苦。