Слой Vector Mask

Преглед на слоевия векторен маск

Векторната маска е път без зависимост от резолюцията, който отрязва съдържанието на слоя. Векторните маски обикновено са по-точни от тези, създадени с инструменти на база на пиксели. Вие създавате векторни маски с помощта на инструментите за писалка или форми.

Aspose.PSD поддържа визуализация и прилагане на векторни маски. Можете да редактирате векторни маски чрез редактиране на векторни пътища.

Векторен път в Aspose.PSD

Достъпът до векторните пътища в Aspose.PSD се осигурява чрез VsmsResouce и VmskResouce, които са детски класове на VectorPathDataResource.

todo:image_alt_text

Как да редактирате векторен път?

Структура на векторния път

Основната структура за манипулиране на пътища е VectorPathRecord. Но за ваше удобство се предлага следното решение.

За лесно редактиране на векторни пътища, трябва да използвате класа VectorPath, който съдържа методи за удобно редактиране на векторни данни в ресурси, произтичащи от VectorPathDataResource

Започнете като създадете обект от тип VectorPath.

За ваше удобство можете да използвате статичния метод VectorDataProvider.CreateVectorPathForLayer, който ще намери векторен ресурс в подадения слой и ще създаде обект VectorPath върху него.

След всички редакции можете да приложите обекта VectorPath с промените обратно към слоя, използвайки статичния метод VectorDataProvider.UpdateLayerFromVectorPath.

Типът VectorPath съдържа списък от елементи на PathShape и описва цялата векторна изображение, което може да се състои от една или повече форми.

todo:image_alt_text

Всяка форма на пътя е векторна фигура, която се състои от отделен набор от бизие възли (точки).

Възлите са обекти от тип BezierKnot, които са основно точките, от които е изградена фигурата.

todo:image_alt_text

Следният примерен код показва как да имате достъп до фигурата и точките.

Как да създадете форма?

За да редактирате форма, трябва да получите съществуваща от VectorPath.Shapes списъка или да добавите нова, като създадете PathShape инстанция и я добавите към списъка Shapes.

Как да добавите бизии (точки)?

Можете да манипулиратете точките на формата като елементи на обикновен списък, използвайки свойството PathShape.Points, например, можете да добавите точки на формата:

BezierKnot съдържа точката на крепост и две контролни точки.

todo:image_alt_text

Ако точките на крепостта и контролните точки имат същите стойности, този възел ще има остър ъгъл.

За да промените позицията на точката на крепост, заедно с контролните точки (подобно на това, което се случва в Photoshop), в BezierKnot има метод Shift.

Следният примерен код демонстрира движението на целия бизий възел вертикално нагоре по координатата Y:

Можете да манипулиратете точките на формата като елементи на обикновен списък, използвайки свойството PathShape.Points, например, можете да добавите точки на формата:

Свойства на PathShape

Редактирането на PathShape не се ограничава само до редактиране на възли, този тип също разполага с други свойства.

PathOperations (Булеви операции)

Свойството PathOperations е така наречена булева операция, чрез промяната на стойността на която се дефинира как се смесват множество форми.

Има следните възможни стойности:

  • 0 = ИзключителноПрепокриващиСеФорми (операция XOR).
  • 1 = КомбиниранеНаФормите (операция OR).
  • 2 = ИзважданеНаПредниятФорма (операция NOT).
  • 3 = ПресичанеНаОбластиНаФормата (операция AND).

todo:image_alt_text

Свойство IsClosed (Затворена форма)

Също така, използвайки свойството PathShape.IsClosed, можем да определим дали първият и последният възел на формата са свързани.

Затворена форма Отворена форма
todo:image_alt_text todo:image_alt_text

FillColor Property

Нито една фигура не може да има своя собствен цвят, така че можете да промените цвета на целия векторен път с помощта на свойството VectorPath.FillColor.

Можете да манипулиратете точките на формата като елементи на обикновен списък, използвайки свойството PathShape.Points, например, можете да добавите точки на формата:

Тук ще намерите изходния код на VectorDataProvider и свързаните класове: