【发布时间】:2015-11-17 13:49:54
【问题描述】:
我找到了this CanvasRenderingContext2D,我用它玩了一下。我能够使用此上下文缩放和旋转我的图像:
crop: function () {
var canvas = document.createElement("canvas");
var context = canvas.getContext("2d");
canvas.width = this.options.width / this.scale;
canvas.height = this.options.height / this.scale;
var currWidth = this.imgWidth * this.scale;
var currHeight = this.imgHeight * this.scale;
var correctX = (currWidth - this.imgWidth) / 2;
var correctY = (currHeight - this.imgHeight) / 2;
var sourceX = (this.posX - correctX) / this.scale;
var sourceY = (this.posY - correctY) / this.scale;
context.translate(sourceX, sourceY);
context.translate(this.imgWidth / 2, this.imgHeight / 2);
context.rotate(this.rotate * Math.PI / 180);
context.drawImage(this.imgFull, this.imgWidth / 2 * -1, this.imgHeight / 2 * -1);
this.options.modal.remove();
this.promise.resolve(canvas);
},
不幸的是,我找不到任何垂直或水平翻转画布的功能。在代码中,我认为我可以执行以下操作:
if(self.flipV) {
context.rotateY(180);
}
if(self.flipH) {
context.rotateX(180);
}
但我找不到任何在 y 轴或 x 轴上旋转的方法。 有什么办法可以在这里进行翻转转换吗?
【问题讨论】:
-
虽然不是很明显,但是可以使用
context.scale方法进行翻转。使用context.scale(-1,1)水平翻转,使用context.scale(1,-1)垂直翻转。就像旋转一样,您必须在执行context.scale之前使用context.translate设置旋转点。 :-) -
哇。这是我的情况的完美解决方案。谢谢。你不想从你的评论中得到答案吗?
标签: canvas 2d transformation