1
У меня есть imageCanvas с его матрицей преобразованияЗаписи от одного фиксированного холста на другой плавучий
Image = new image();
image.src = //stuff;
imageContext.drawImage(Image, 0, 0);
var t = imageContext.currentTransform;
, что нарисовано на другой холст
context.drawImage(imageCanvas, 0, 0);
, на котором я рисую линию
context.moveTo(mousePos.X, mousePos.Y);
context.lineTo(currentPos.X, currentPos.Y);
context.stroke();
Я сохраняю свои строки в векторе линий объектов. Я хотел бы присоединиться к двум слоям в «Изображение», но эта функция работает только для traslation, но не для вращения и масштабирования.
var saveCanvas = document.createElement('canvas');
var saveContext = saveCanvas.getContext('2d');
saveCanvas.width = Image.width;
saveCanvas.height = Image.height;
saveContext.drawImage(Image,0,0);
saveContext.save();
var t = imageContext.currentTransform;
saveContext.setTransform(1,0,0,1,-t.e,-t.f);
for(var i = 0; i < lines.length; i++){
saveContext.beginPath();
saveContext.moveTo(lines[i].from.X, lines[i].from.Y);
saveContext.lineTo(lines[i].to.X, lines[i].to.Y);
saveContext.stroke();
}
saveContext.restore();
Image.src = saveCanvas.toDataURL();
Как изменить аргументы 'setTransform' для решения проблемы?
nope, но я решил только сейчас. var m = [[t.a, t.c, t.e], [t.b, t.d, t.f], [0,0,1]]; m = math.inv (m); saveContext.setTransform (m [0] [0], m [1] [0], m [0] [1], m [1] [1], m [0] [2], m [1] 2]); – Simone
@Simone Это помогло бы узнать, что вам нужна обратная матрица. Вы также можете получить обратную матрицу, выполнив 't.inverse()'. –