シンプルなsvgには、赤、青、黄の3つのパスがあります。 私はすべての図形(例えば0.3)を拡大縮小し、赤+青(例えば90度)だけを回転させたいと思います。 回転ポイントは赤いパスの中央にする必要があります。 これらの操作の後、私は黄色の形状に元の距離が0.3でスケールされた赤色のパスまでの距離を持つことを望みます。シンプルな変換
私の試みがあった。
- は赤道の真ん中を計算します。
- (-redCenterPoint.x、 - redCenterPoint.y)と翻訳することにより、原点(0,0)に変換(翻訳redCenterPoint.x、redCenterPoint 0.3
- ムーブバック赤パスによってスケール赤パス
- .Y)blueCenterを計算することにより、青と黄色のための同じ
- 繰り返し、yellowCenter
は、私の質問は:にはどうすれば元の画像構造を保つが、0.3によってスケーリングおよび90によって回転することができますか? - 青色のパスは赤色のパスに、黄色は元の距離が0.3でスケールされます。
3つのシェイプのredCenterPointを考慮すると、グループはオリジナルと同じに見えますが、縮尺が正しく見えます。 私は同じことをするが、最初の方法を知りたい。
SVGファイル:renderin SVGのためRiversoftコンポーネントを使用して、Delphiで
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1">
<path
style="opacity:1;fill:#ff0000"
d="m 146.98669,417.50473 561.36408,0 0,206.40686 -561.36408,0 z"
id="red"
inkscape:label="#table" />
<path
style="opacity:1;fill:#0000ff"
d="m 641.11218,339.32031 65.67491,0 0,82.87548 -65.67491,0 z"
id="blue" />
<path
style="opacity:1;fill:#ffff00"
d="m 764.69525,515.63883 55.28473,-55.28473 46.43917,46.43918 -55.28473,55.28472 z"
id="yellow"
inkscape:connector-curvature="0"
inkscape:label="#yellow" />
コード:
redBounds: TSVGRect;
redCenterPoint: TPointF;
redMatrix: TSVGMatrix
redBounds := (svgDoc.SVG.AllItems['red'] as TSVGGraphicElement).BoundsRect;
redCenterPoint.x := bDiamond.Left + (bDiamond.Width)/2;
redCenterPoint.y := bDiamond.Top + (bDiamond.Height)/2;
redMatrix := CreateTranslateRSMatrix(-redCenterPoint.x, -redCenterPoint.y);
redMatrix := RSMatrixMultiply(redMatrix,
CreateRotationRSMatrix(TPoint(0,0), DegToRad(90)));
redMatrix := RSMatrixMultiply(redMatrix,
CreateScaleRSMatrix(0.3, 0.3));
redMatrix := RSMatrixMultiply(redMatrix,
CreateTranslateRSMatrix(redCenterPoint.x, redCenterPoint.y));
(svgDoc.SVG.AllItems['red'] as TSVGGraphicElement)
.Matrix := mainMatrix;
これは私の質問です:元の画像を維持するために、これらの変換の後に:赤色のパスには青色のパスが、0.3でスケールされた元の距離には黄色が必要です。 aply変換後の青いパスの位置をどのように制御できますか?私は乞食と同じイメージになりたいが、0.3で縮尺されている。 – Geanni
本当にやりたいことが分かりません。回転する?規模? 「元のイメージを維持する」?希望の結果の写真を表示できますか? – MBo
あなたは達成したいことを理解するのが少し難しいと感じますが、青と赤をグループ化してそれを自分のものに変えたいと思うように思えますが、3つのパスをすべて保持するグループ全体を拡大しますかなり確かです。それは特に私が確信している黄色い道についての少しです。 MBoとして - 図面を作成できますか? –