stroke_extents()
と関数の情報が与えられたようにtranslate(x, y)
、scale(x, y)
私は任意のカイロ(私はpycairoを使用しています)パスを取り、それを「最適」にすることができるはずです。つまり、中央に配置し、使用可能なスペースを埋めるように拡張します。
パスを描画する前に、原点が左下隅、上がy +、右がx +、高さと幅が両方とも1になるようにキャンバスを拡大縮小しました。これらの条件を考慮すると、このコードはパスを正しく拡大縮小しているようです。
# cr is the canvas
extents = cr.stroke_extents()
x_size = abs(extents[0]) + abs(extents[2])
y_size = abs(extents[1]) + abs(extents[3])
cr.scale(1.0 / x_size, 1.0 / y_size)
しかし、私は一生の間、翻訳を理解することはできません。より簡単なアプローチはありますか?カイロパスをキャンバスに「最適」にするにはどうすればよいですか?
この質問で不明な点がある場合は、説明を求めてください。