ClipPath()
Синтаксис
ClipPath([Flags])
Описание
Отсекает последующий вывод Векторной графики за пределами замкнутых фигур текущего Векторного контура. Последующие операции рисования будут работать только с внутренними областями замкнутых фигур текущего Векторного контура. Зона отсечения будет объединена с любым отсечением, которое существовало ранее на данной поверхности вывода.
По умолчанию, после вызова этой функции, текущий Векторный контур будет сброшен. Это поведение можно изменить с помощью соответствующих флагов.
Параметры
Flags (дополн.) Может быть одним из следующих значений: #PB_Path_Default : Без специальных опций (по умолчанию). #PB_Path_Preserve : Не сбрасывать текущий Векторный контур после вызова этой функции.
Возвращаемое значение
Ничего.
Комментарии
Не существует функции "UnclipPath()": после применения ClipPath(), остаётся область отображающая вывод Векторной графики (зоны внутри замкнутых фигур), и она может быть только уменьшена, путем дальнейшего отсечения, и не может быть увеличена. Однако, текущая отображающая область может быть сохранена и восстановлена с помощью функций SaveVectorState() и RestoreVectorState() соответственно. Поэтому, чтобы использовать временное ограничение, сначала сохраните состояние свойств Векторной графики, а затем восстановите его, чтобы вернуться к исходному размеру отображающей области.
Обратите внимание, если используемый для отсечения Векторный контур имеет накладываемые друг на друга замкнутые фигуры, отсечение будет выполняется в нечётной / чётной последовательности. Нечётные слои замкнутых областей будут доступны для рисования, а чётные слои - не доступны. Работа этой функции выглядит следующим образом:
Пример
If OpenWindow(0, 0, 0, 400, 200, "VectorDrawing", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) CanvasGadget(0, 0, 0, 400, 200) LoadFont(0, "Times New Roman", 20, #PB_Font_Bold) If StartVectorDrawing(CanvasVectorOutput(0)) ; Построим отсекающий Векторный контур с вложенными эллипсами (каждый второй будет протравлен). For i = 10 To 150 Step 5 AddPathEllipse(200, 100, 2*i, i) Next i ClipPath() ; Выведем текст, протравленный с помощью этого Векторного контура. VectorFont(FontID(0), 150) VectorSourceColor(RGBA(255, 0, 0, 255)) MovePathCursor(50, 25) DrawVectorText("Text") StopVectorDrawing() EndIf Repeat Event = WaitWindowEvent() Until Event = #PB_Event_CloseWindow EndIf
См. также
Поддерживаемые OS
Все