Как сделать неразрушающую маску в Inkscape?

Я хочу получить белую иконку (конечным результатом является белое изображение PNG с прозрачностью).

Например, я хочу, чтобы из этого прямоугольника был вычтен белый прямоугольник с текстом «НИЧЕГО ЗДЕСЬ» (я хочу, чтобы окончательный PNG имел прозрачность там, где находится текст).

Сделать это очень просто — я создаю прямоугольник, добавляю текст, затем вычитаю текст (возможно, после преобразования его в контур) из прямоугольника.

Это работает, но текст остается фиксированным, и я больше не могу его редактировать.

Выше приведено упрощенное описание того, с чем я столкнулся. Обычно я не работаю только с текстом — мне нужно вычесть одну фигуру из другой, но я хотел бы продолжать работать с фигурой, используемой для вычитания.

Я думал об использовании маски, но я не могу понять, как бы я использовал ее в этом случае. При этом редактирование масок/клипов также усложняется. В идеале я хотел бы использовать фильтр, который просто делает все, что ниже объекта, к которому он применяется, «исчезает», но я не уверен, какой фильтр мне следует использовать (и как я должен его настроить).

РЕДАКТИРОВАТЬ: Краткое примечание - я немного работал с Corel Draw. Если мне не изменяет память, Corel может превратить объект в своего рода фильтр, похожий на маску, где он применяет любой выбранный вами эффект ко всему, что находится непосредственно под объектом. Кажется, это называется линза. Указанные линзы могут применять различные эффекты (включая манипуляции с цветом и многое другое). Разве в Inkscape нет ничего подобного?

Привет Шаамаан, добро пожаловать в GD.SE. Я отредактировал заголовок вашего вопроса для ясности. Если я изменил что-то за пределами вашего понимания, не стесняйтесь отредактировать обратно! Если у вас есть вопросы об этом стеке, загляните в справочный центр или присоединитесь к нам в чате по графическому дизайну . Продолжайте вносить свой вклад и наслаждайтесь!

Ответы (3)

Это можно сделать с помощью масок и сохранить текст как текст. Благодаря творческому использованию клонов вы также можете сделать так, чтобы текст можно было редактировать, не снимая маску!

gif результата

Вот краткий перечень шагов:

  1. Во-первых, создайте свой прямоугольник, из которого вы хотите «вырезать» текст. Я сделал свой пурпурным.

  2. Затем продублируйте пурпурный прямоугольник и сделайте его 100% белым.

  3. Добавьте свой текст над белым прямоугольником и сделайте его черным на 100%.

  4. Клонировать текстовый объект (Alt + D)

  5. Выберите клонированный текстовый объект и белый прямоугольник и сгруппируйте их вместе.

  6. Выберите пурпурный прямоугольник и группу, содержащую клон и белый прямоугольник, и выполните « Правка»> «Маска»> «Установить».

  7. Выберите исходный текстовый объект, добавьте его в отдельную группу и установите основную непрозрачность (ползунок внизу диалогового окна заливки/обводки) этой группы на 0.

  8. Выделите все и сгруппируйте все вместе. Чтобы отредактировать текстовый объект, выберите инструмент «Текст» и щелкните текст для редактирования.

Меня смущает это решение. Я думал, что понял, как это работает, но, похоже, мой Inkscape барахлит, или решение не такое простое. A) Почему вы группируете текстовый объект отдельно? Б) Пункт 5) кажется трудновыполнимым. В конце концов я переместил клон, выбрал оригинал, затем Ctrl-Z порядок перемещения и Shift-выбрал клонированную группу. Это способ сделать это? C) По какой-то причине конечный объект вел себя так, как будто он имел непрозрачность 60% (или что-то в этом роде). Это как если бы клон исходного прямоугольника не стал белым?
В черно-белой маске все, что находится под белым, отображается, а все, что находится под черным, становится невидимым, что позволяет просвечивать объекты под маскируемым объектом. Обычно, сделав исходный текст прозрачным, мы ожидаем, что клонированный черный текст также станет прозрачным внутри маски, оставив маску полностью белой и сделав видимыми все части пурпурного объекта. Но мы не сделали прозрачным исходный текст — мы сделали прозрачной группу, содержащую исходный текст. Клон не будет подчиняться изменениям непрозрачности группы, содержащей его оригинал. Вот почему трюк работает. :)

Когда мне нужно «уничтожить» объект (часто текст преобразуется в путь), который я, возможно, захочу сохранить на потом, я использую слои .

Откройте диалоговое окно «Слои» с помощью Ctrl+ Shift+ L. Создайте слой и назовите его, например, «Текст». Когда вы будете готовы закончить изображение, продублируйте текстовый слой, преобразуйте его в контуры (или в то, что вам нужно), а затем скройте оригинал. Если я хочу отредактировать текст позже, я удаляю дубликат слоя и редактирую оригинал.

Хранение «разрушаемых» объектов, содержащихся в их собственном слое, значительно упрощает процесс. Например, если у меня есть слой, состоящий только из текста, и я хочу преобразовать его весь в путь, это простой Ctrl+ A, Ctrl+ Shift+ Cдля преобразования слоя.

Примечание. Слои на самом деле не являются частью стандарта SVG. Реализация «слоя» в Inkscape на самом деле представляет собой группу svg (которая является допустимой SVG), которая имеет специальный атрибут, поэтому Inkscape знает, как обращаться с ним по-разному. Переключение видимости слоя допустимо, если вы используете SVG на веб-странице или что-то в этом роде, так dispaly:noneкак это допустимый атрибут для группы, хотя это увеличит размер SVG.

Таким образом, вы создаете копию объекта, который хотите уничтожить. В настоящее время я делаю то же самое, хотя мое решение, вероятно, менее «красиво» (я дублирую его и просто помещаю рядом, так как при создании изображений PNG я всегда экспортирую только выделенную область). Я надеялся, что есть более простой способ... Кроме того, имейте в виду, что ОБА объекта уничтожаются - в примере это текст, а также лежащий в его основе прямоугольник. Сделать какие-либо шансы на текст (а затем «применить» эти изменения с помощью вычитания) по-прежнему сложно, если это единственный дублированный объект.
К сожалению, я не думаю, что есть более чистый и универсальный способ сделать это. Группировка ваших изменений в слое и дублирование/скрытие перед уничтожением имеет то преимущество, что если вам нужно изменить его слой, вам не нужно делать такие вещи, как позиционирование объектов и прочее.
Многие из этих операций также имеют сочетания клавиш , которые могут значительно ускорить работу.

Сделайте объект маски полностью белым, без рамки, отлично работает. Также попробуйте разные цвета, чтобы поэкспериментировать с разными результатами.

Привет @bobnotbob, добро пожаловать на GD.SE :) Мы стараемся не оставлять здесь очень короткие ответы. Не могли бы вы добавить еще несколько объяснений/деталей к вашему ответу? Может быть, вы можете просмотреть пример и включить скриншоты или GIF-файл, показывающий, что вы делаете и почему это работает.