обновление холста с помощью drawImage из буфера не применяет действия с drawImage - PullRequest
2 голосов
/ 19 декабря 2011

Я использую метод буферизации для обновления холста, дело в том, что когда я рисую изображение на моем буферном холсте и применяю его к реальному холсту, на реальном холсте изображения нет. Но я могу применить что угодно еще к настоящему холсту.

Это мой код:

var ctx = $('#canvas')[0].getContext("2d"),
    width  = $("#canvas").width(),
    height = $("#canvas").height(),
    buffer = $("<canvas>")[0].getContext("2d");
ctx.canvas.width = width;
ctx.canvas.height = height;
buffer.canvas.width = width;
buffer.canvas.height = height;
var image = new Image();
image.src = "img/logo.png";
$(image).load(function() {
    buffer.drawImage(image, 0, 0);
});
ctx.drawImage(buffer.canvas, 0, 0);

1 Ответ

2 голосов
/ 19 декабря 2011

Это не работает, потому что происходят следующие события:

  1. вы рисуете пустой буфер на свой обычный холст.
  2. Затем изображение загружается.
  3. Затем изображение рисуется в буфере. Теперь у вас есть буфер с изображением, но он никогда не обращается к обычному холсту.

Если вы поместите строку ctx.drawImage внутри нагрузки:

$(image).load(function() {
    buffer.drawImage(image, 0, 0);
    ctx.drawImage(buffer.canvas, 0, 0);
});

это будет работать так, как вы хотите.

...