Не работает context.scale(-1, 1);

127
23 июля 2019, 19:20

Не работает context.scale(-1, 1) для отражения картинки на канвасе

ctx.save();
ctx.scale(-1, 1);
ctx.drawImage(head, 100, 100, 50, 50);
ctx.restore();
Answer 1

На самом деле все работает. Просто при вызове restore scale сбрасывается и отрисованное изображение уходит из видимой области.

Чтобы этого избежать можно просто просто исрользовать отрицательные координаты для вывода по оси x.

В этом случае при сбросе scale они становятся положительными и вывод становится нормальным:

Пример:

var ctx = document.getElementById('c').getContext('2d'); 
 
function l(img) { 
  ctx.save(); 
  ctx.scale(-1, 1); 
  ctx.drawImage(img, -200, 0, 100, 100); 
  ctx.restore(); 
  ctx.save(); 
  ctx.drawImage(img, 0, 0, 100, 100); 
  ctx.restore(); 
 
}
<canvas id="c" width="200" height="200"></canvas><br/> 
<img style="display:none" src="http://images.math.cnrs.fr/IMG/png/section8-image.png" width="256" height="256" id="t" onload="l(this)">

READ ALSO
Поэтапный опросник на JavaScript

Поэтапный опросник на JavaScript

Имея такой код я хочу сделать логику опросника подобную этой: https://nasty6typeform

408
Преобразование скалярных типов при сравнении JavaScript

Преобразование скалярных типов при сравнении JavaScript

Объясните, пожалуйста, почему из трех алертов ниже исполняется только последний? Вроде как во всех трёх случаях идет мягкое сравнение на равенство...

170
Подскажите хороший слайдер [закрыт]

Подскажите хороший слайдер [закрыт]

Нужен слайдер, где будет отображаться три окна и при клике на PREV NEXT будут внутри трёх окон меняться картинкиРазмеры окон разные: будут картинки...

153
Выбор региона WordPress

Выбор региона WordPress

Как сделать на сайте Wordpress выбор региона, ну типа "Какой ваш город" и чтобы далее в зависимости от города менялась информация на сайте, подскажите...

147