HTML5 Canvas - проблема окраски - PullRequest
0 голосов
/ 27 января 2011

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

 <script type="text/javascript"> 

function cnvs_getCoordinates(e) {

    x = e.clientX + document.body.scrollLeft;
    y = e.clientY + document.body.scrollTop;
    var c = document.getElementById("coordiv");
    var context = c.getContext("2d");
    context.lineWidth = 5;
    context.strokeStyle = document.getElementById("dcol").value;

    if (started == 1) {
        context.lineTo(x, y);
        context.stroke();
    }
    else {
        context.moveTo(x, y);
    }
}

function a() {
    started = 1;
    context.beginpath();
}

function b() {
    started = 0;
    context.closePath();
}

</script>

HTML-часть

    <body>
<div style="border: thin solid black">hi
  <canvas id="coordiv"   onmousemove="cnvs_getCoordinates(event)" onmousedown="a()" onmouseup="b()" > </canvas>

   <select  id="dcol" name="Colour">
              <option value="black" selected="selected">Black</option>
              <option value="red">Red</option>
              <option value="green"> Green</option>
              <option value="blue">Blue</option>
              <option value="white">** ERASER **</option>
            </select>
</div>
</body>

1 Ответ

1 голос
/ 27 января 2011

В вашем коде было несколько странных вещей, которые я позволил себе исправить.Например, нет необходимости постоянно вызывать getContext (), просто вызовите его один раз.То же самое касается getElementById (), нет необходимости вызывать его более одного раза.Я также переместил ваши события из тега canvas в javascript.Я был действительно озадачен вашей проблемой, когда впервые ее испытал.Порядок ваших вызовов функций stroke () и closePath () казался немного странным ... Я исправил это, но проблема оказалась не в этом ... В конце концов, ваша единственная проблема заключалась в том, что вы написали "beginpath ()""вместо" beginPath () ".

Посмотрите на исправленную версию на jsFiddle .

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