Похоже, что, учитывая информацию в 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)
Я не могу на всю жизнь понять перевод. Есть ли более простой подход? Как мне наилучшим образом подогнать путь Каира на его холсте?
Пожалуйста, попросите разъяснений, если что-то неясно в этом вопросе.