私は、スケーリングされ歪んだファブリック楕円オブジェクトを持っています。スケーリングやスキューなしで同じ楕円を再現したい私は、スケーリングとスキューの値をオフセットすることによって、rx
、ry
、angle
の新しい値を計算することでこれを達成できると仮定します。私はスケーリング値を相殺することができましたが、私はスキュー値を相殺するための計算を理解することができません。ファブリックオブジェクトのスキュー値をリセットする
ご協力いただきありがとうございます。
Jsfiddle - https://jsfiddle.net/jwp2yysh/
サンプルコードを参照してください。私は、青い楕円を赤い楕円に沿って並べるようにします。
var canvas = new fabric.Canvas('c');
var redEllipse = new fabric.Ellipse({
rx: 80,
ry: 50,
originX: 'center',
originY: 'center',
fill: '',
stroke: 'red',
strokeWidth: 1,
top: 180,
left: 240,
angle: 30,
scaleX: 1.23,
scaleY: 1.4,
skewX: 25,
skewY: 0
});
canvas.add(redEllipse);
var blueEllipse = new fabric.Ellipse({
rx: redEllipse.rx * redEllipse.scaleX,
ry: redEllipse.ry * redEllipse.scaleY,
originX: 'center',
originY: 'center',
fill: '',
stroke: 'blue',
strokeWidth: 1,
top: redEllipse.top,
left: redEllipse.left,
angle: redEllipse.angle * redEllipse.scaleY/redEllipse.scaleX,
scaleX: 1,
scaleY: 1,
skewX: 0,
skewY: 0
});
canvas.add(blueEllipse);
<script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/1.7.20/fabric.min.js"></script>
<canvas id="c" width="500" height="500"></canvas>
なぜblueEllipseでskewX/skewYを使用しないのですか? – Durga
blueEllipseにスケーリング/スキューがないようにしたいが、それはredEllipse – user700284