BeginClipPath

Syntax

BeginClipPath(Flags=#Null)

Description

Sets the clipping region for subsequent drawing operations to the geometry defined by the current path. Any drawing that occurs outside the path's shape will be clipped (not rendered). The current path must be defined using path commands (PathMoveTo(), PathAddLine(), etc.) before calling this function. Each call to BeginClipPath() must be paired with a corresponding call to EndClip().

Parameters

Flags (optional)
Optional flags to modify the behavior. Currently, only relevant for the Direct2D backend.

#PG_Antialias_Aliased: Specifies that the edges of the clipping path should be aliased (not anti-aliased).
                     Default is #PG_Antialias_PerPrimitive which uses anti-aliasing.

Return Value

This command does not return a value.

Remarks

The path geometry is defined in device-independent pixels (DIPs) but converted internally based on the current output's DPI. Clipping regions are cumulative; nested calls will result in an intersection of the clipping areas. The path itself is consumed by this command unless the #PG_Path_Preserve flag was used when defining the path segments. Calls to BeginClipPath() must be balanced with calls to EndClip().

Example

IncludeFile "ProGUI_PB.pbi"

StartProGUI()

Procedure DrawHandler(Window, EventType, *EventData.PG_EventDraw, *UserData)
  DrawClear(RGB(255, 255, 255), 1)

  ; Draw a red box partially clipped by a circle path
  DrawBox(50, 50, 200, 150, RGB(255, 0, 0), 0.5) ; Draw background box first

  ; Define a circular path
  PathMoveTo(150 + 75, 125) ; Start point for arc
  PathAddArc(150, 125, 75, 75, 0)
  PathAddArc(150 + 75, 125, 75, 75, 0)

  ; Set the clipping region to the defined path
  BeginClipPath()

  ; Draw a blue box - only the part inside the circle path will be visible
  DrawBox(50, 50, 200, 150, RGB(0, 0, 255), 1)

  ; Restore the previous clipping state
  EndClip()

  ; Draw text outside the clipped area (to show clipping is removed)
  DrawTxt(*UserData, 50, 220, RGB(0,0,0))
EndProcedure

MyWindow = CreateWindow(0, 0, 300, 300, "Path Clipping Example")
MyText = CreateText("Text outside clip", "Arial", 12)

If MyWindow
  AddEventHandler(MyWindow, #PG_Event_Draw, @DrawHandler(), MyText)
  WindowShow(MyWindow, #True, #PG_Window_ScreenCentered)

  Repeat
    Event = WaitWindowEvent()
  Until Event = #PB_Event_CloseWindow
EndIf

FreeText(MyText)
StopProGUI()

See Also

EndClip, BeginClipBox, PathMoveTo, PathAddLine, PathAddCurve, PathAddArc, PathClose, BeginDraw, EndDraw

Supported OS

Windows (Direct2D only)