Булевы операции на Каирских путях? - PullRequest
6 голосов
/ 09 мая 2009

Есть ли способ построить пути в Каире, комбинируя два пути вместе с помощью булевых операций, таких как объединение, разность и пересечение? Я работаю над приложением векторной графики, которое использует Cairo для рендеринга, и хотел бы дать моим пользователям возможность комбинировать пути таким образом, но я не могу найти способ сделать это в Каире.

Ответы [ 2 ]

2 голосов
/ 12 марта 2012

Я не нашел способа сделать это с помощью библиотек Каира. Но это особенность, которую я тоже искал. Было бы определенно полезно, когда (например) поглаживание комбинации двух путей - операторы компоновки, упомянутые ntd, похоже, не могут этого сделать.

Тем временем я пытаюсь написать сценарии для inkscape и позволяю inkscape выполнять объединение / различие. Приемлемо для проблемы, над которой я работаю, но определенно не для вашей. Вам повезло, с Каиром или любой другой библиотекой SVG? После нескольких дней поиска в Google, это не кажется тривиальным: /

0 голосов
/ 09 октября 2009

Объединение путей с операторами не имеет для меня никакого смысла. Что вы получаете от "линии И кривой ИЛИ дуги"?

Вместо этого вы можете применить операторы компоновки , используя cairo_set_operator(): он будет определять, как текущая операция рисования (будь то cairo_fill(), cairo_stroke() или что-то еще) должна смешиваться со старым содержимым поверхности.

...