Выравнивание инсульта в Каире - PullRequest
0 голосов
/ 26 декабря 2018

Многие графические пакеты позволяют пользователю выбирать, где он хотел бы нарисовать границу области вокруг фигуры;либо внутри, снаружи или в центре фигуры.Например, это показывает тот же квадрат с границей, проведенной вдоль центра, внутри и снаружи соответственно:

enter image description here

Я мог бы масштабировать путь вверх / внизна основе ширины обводки, но я хотел сначала проверить, была ли встроенная поддержка для этого.

Я использую Ruby, но если для этого есть метод C, он, вероятно, доступен в привязках Ruby.а также.

Есть ли способ нарисовать штрих вокруг внешней или внутренней части пути, а не вдоль центра, в Каире?

1 Ответ

0 голосов
/ 27 декабря 2018

Нет, такого встроенного метода не существует.

Скорее всего, это можно приблизить к временной поверхности, которая позже будет использоваться в качестве маски.Например, чтобы сделать «снаружи», вы сначала заполняете временную поверхность «прозрачным», затем удваиваете желаемую ширину линии на «непрозрачную» и, наконец, заполняете форму «прозрачным», чтобы избавиться от внутренней частиширина линии.Полученную поверхность можно затем использовать в качестве маски.

«Внутри» будет аналогичным, но с дополнительным приемом: опять же, прозрачная поверхность и штрих с удвоенной шириной линии.Теперь внешняя часть этого удара должна быть удалена.Для этого нужен путь с извилистым правилом четности-нечетности.Добавление прямоугольника размером с поверхность к этому пути инвертирует путь, позволяя таким образом удалить все снаружи с помощью заливки.Для правила ненулевой намотки ... У меня нет никаких непосредственных идей (ну, еще одна временная поверхность, которая затем переворачивается с помощью краски полной поверхности с оператором SUBTRACT?).

...