Я пытаюсь программировать простую демонстрацию первых нескольких итераций Серпинского Ковер, как так:Смущает globalCompositeOperation
Я так хочу, чтобы продолжить это, нажав применить основную маску шаблона в меньшем масштабе каждый шаг. Мне кажется, что, начав с черного квадрата, а затем используя globalCompositeOperation «destination-in» и исходную маску, как и второе изображение, я должен быть способен делать то, что хочу, но я изо всех сил пытаюсь это сделать вместе.
Это рисует фон черный квадрат:
context.globalCompositeOperation = "source-over";
context.fillStyle = 'black';
context.fillRect(0, 0, 500, 500);
И тогда я ожидал подобный код должен произвести первый шаг. Но вместо этого он просто пуст.
context.globalCompositeOperation = "destination-in";
var mask = [1, 1, 1, 1, 0, 1, 1, 1, 1];
for (var m = 0; m < 9; ++m)
{
var x = 10 + m % 3 * 150;
var y = 10 + Math.floor(m/3) * 150;
if (mask[m] > 0)
{
context.fillRect(x, y, 150, 150);
}
}
Я собрал скрипку в http://jsfiddle.net/128gxxmy/4/ чтобы показать проблему.
Это действительно не сложно, поэтому я явно неправильно понял что-то важное и буду благодарен за любые советы.
Спасибо.
Редактировать: Конечно! Я знаю, почему это пусто. Первый заполняющий прямоугольник очищает все, кроме верхнего левого угла, а следующий вытирает его. Мне нужно использовать rect (...), затем fill() за один раз. Если я переделаю его, чтобы нарисовать каждый проход за один шаг, он должен сделать трюк.