Here is how I created a Rectangular clip Bilder in bestimmten Teil fallen lassen und jetzt ein wenig erweitern. Zoom-Funktionalität hinzugefügt.Rectangle clip nicht mit Leinwand skalieren, wenn Zoom
Unten ist, wie ich einen Clip erstellt habe.
function clipByName(ctx) {
this.setCoords();
var clipRect = findByClipName(this.clipName);
var scaleXTo1 = (canvasScale/ this.scaleX);
var scaleYTo1 = (canvasScale/this.scaleY);
ctx.save();
var ctxLeft = -(this.width/2) + clipRect.strokeWidth;
var ctxTop = -(this.height/2) + clipRect.strokeWidth;
var ctxWidth = clipRect.width - clipRect.strokeWidth;
var ctxHeight = clipRect.height - clipRect.strokeWidth;
ctx.translate(ctxLeft, ctxTop);
ctx.scale(scaleXTo1, scaleYTo1);
ctx.rotate(degToRad(this.angle * -1));
ctx.beginPath();
ctx.rect(
clipRect.left - this.oCoords.tl.x,
clipRect.top - this.oCoords.tl.y,
clipRect.width,
clipRect.height
);
ctx.closePath();
ctx.restore();
}
Allerdings wird dieser Clip nicht mit Canvas gezoomt. So sieht es nach dem Zoomen aus.
Voll Code und Demo hier: https://jsfiddle.net/yxuoav39/2/
Es ist wie unten auch nach Zoom aussehen sollte. Hinzufügen eines small video clip, um das Problem zu demonstrieren.
um scaleX und scaleY gespielt und nicht gelingen. Alle Zeiger würden sehr geschätzt werden, um den Fehler zu verfolgen.
Jede Sache, dies zu vermeiden? –
@ SureshAtta Nr. Ich fand es immer gut. Dasselbe gilt für alle Pfadobjekte, nachdem Sie es mit einem Aufruf wie 'ctx.moveTo',' ctx.arc', 'ctx.lineTo' usw. definiert haben, können diese nicht geändert werden. – Blindman67