プロジェクトにキャンバスを使用していますが、歪んでいる要素がいくつかあります。y値のみをスキューしているので、スキューした後の画像の新しい幅を知りたいだけです(別のキャンバス要素に揃えることができます)。以下のコードをチェックして、私が何を意味するかを確認してください
ctx.save();
//skew the context
ctx.transform(1,0,1.3,0,0,0);
//draw two images with different heights/widths
ctx.drawImage(image,0,0,42,60);
ctx.drawImage(image,0,0,32,25);
目標は、42x60の画像がXx60の画像になったことを知ることです。これにより、0,0で描画する前に変換を行うことができます。各画像を個別に測定するのは簡単ですが、プロジェクト全体で異なるスキュー値と高さ/幅があり、位置合わせする必要があります。現在、私はこのコードを使用しています(25〜42の幅の画像で適切に機能します):
var skewModifier = imageWidth*(8/6)+(19/3);
var skewAmount = 1.3; //this is dynamic in my app
var width = (skewModifier*skewAmount)+imageWidth;
この式はすぐに崩壊しますが、画像が広くなるにつれて(このような直線的な値ではなく、傾斜した式だと思います)。キャンバスがスキューに対して何をするかについてのアイデアはありますか?