Я работаю над анимацией частиц для своего игрового движка и хочу знать, можно ли изменить оттенок, гамма и другие свойства изображения объекта ImageElement холста, сохраняющие форму изображения.
То, что я пробовал до сих пор, это:
_ctx.save();
_ctx.setStrokeColorHsl(240, 100, 50);
_ctx.fillRect(c.x, c.y, width, height);
_ctx.globalAlpha = nAlpha; //Modify the transparency
_ctx.drawImageScaled(p, c.x, c.y, width, height);
_ctx.restore();
Что работает, но он применяет тон ко всей части изображения, что означает, что если изображение представляет собой PNG с прозрачными краями, оно будет рисовать даже прозрачные части, потому что он использует "fillRect()" (который рисует только прямоугольники) для применить преобразование и объект изображения.
Результат такой: (красные частицы — полупрозрачные круги)
Есть ли другой способ подкрасить только форму изображения или изменить объект напрямую, чтобы преобразование применялось только к видимой части изображения?