HTML5 Canvas: градиенты и strokeStyle меня смущают - PullRequest
3 голосов
/ 15 ноября 2010

Почему следующий код не выдает три строки, все с одинаковыми градиентами?

<html>
  <body style="background: black;">
        <canvas id="Test" width="516" height="404"> </canvas>
        <script>
        var ctx = document.getElementById('Test').getContext('2d');
        ctx.lineWidth = 8;

        function addColorStops(gradient) {
            gradient.addColorStop(0.5, 'rgba(151, 165, 193, 0.5)');
            gradient.addColorStop(1, 'rgba(151, 165, 193, 1)');
        }

        function drawLine(x1, x2, y) {
            var g = ctx.createLinearGradient(x1, y, x2, y);
            addColorStops(g);
            ctx.strokeStyle = g;

            ctx.moveTo(x1, y);
            ctx.lineTo(x2, y);
            ctx.stroke();
        }

        drawLine(10, 100, 10);
        drawLine(10, 100, 30);
        drawLine(10, 100, 50);
        </script>
  </body>
</html>

Вместо этого первая строка получает очень очень слабый градиент, вторая строка получает довольно хороший градиент, а последняяполучает резкий градиент.

Я думаю, это связано с неправильным пониманием того, как параметры для createLinearGradient должны работать, или неправильным пониманием того, как назначения strokeStyle влияют на будущие штрихи ...

Ответы [ 2 ]

6 голосов
/ 15 ноября 2010

Ага, я понял это.Мне нужно добавить ctx.beginPath() прямо перед ctx.strokeStyle = g;.Оказывается, что линии являются частью пути, и, таким образом, если вы не начинаете новый путь, он будет думать, что вы все еще продолжаете старый, и, таким образом, будете использовать свою исходную начальную точку и конечную конечную точку в качестве начала и конца.для градиентных целей.

1 голос
/ 22 марта 2011

Я получаю переопределенный штрих-стиль! Добавляя beginPath, мои цвета обводки работают ..

ctx.beginPath (); ctx.moveTo (x, y); ctx.lineTo (x, y); ctx.strokeStyle = "# 182945"; ctx.stroke ();

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...