PureBasic

IsInsidePath()

Синтаксис

Result = IsInsidePath(x.d , y.d [, CoordinateSystem])

Описание


Эта функция проверяет, находится ли точка с указанными координатами внутри замкнутой фигуры текущего Векторного контура. То есть, эта функция возвращает не нулевое значение, если данная точка будет залита, в случае вызова функции FillPath().

Параметры

x.d, y.d Координаты точки, которую требуется проверить.
CoordinateSystem (дополн.) Определяет используемую для точки систему координат. Этот параметр может быть одним из следующих значений:
  #PB_Coordinate_Device: Система координат (физических) устройства вывода.
  #PB_Coordinate_Output: Система координат устройства вывода, с выбранной единицей измерения. 
  #PB_Coordinate_User  : Система координат используемая для точек Векторного контура.
  #PB_Coordinate_Source: Система координат используемая для источника рисования в векторной графике.

Возвращаемое значение

Возвращает не нулевое значение, если точка находится внутри замкнутой фигуры Векторного контура, в противном случае 0.

Комментарии

См. обзор VectorDrawing для ознакомления с различными системами координат.

Пример

; В этом примере используется функция IsInsidePath() для окраски фигуры зеленым цветом,
; когда курсор мыши находится внутри неё, и синим - в противном случае.
;
Procedure Draw()
    x = GetGadgetAttribute(0, #PB_Canvas_MouseX)
    y = GetGadgetAttribute(0, #PB_Canvas_MouseY)

    If StartVectorDrawing(CanvasVectorOutput(0))
        VectorSourceColor(RGBA(255, 255, 255, 255)) ; стираем предыдущий контент
        FillVectorOutput()

        AddPathEllipse(200, 100, 150, 75) ; подготовим контур...

        If IsInsidePath(x, y, #PB_Coordinate_Device) ; Проверяем, находится ли курсор мыши внутри...
            VectorSourceColor(RGBA(0, 255, 0, 255))
        Else
            VectorSourceColor(RGBA(0, 0, 255, 255))
        EndIf

        FillPath() ; Заливка замкнутых фигур.
        StopVectorDrawing()
    EndIf
EndProcedure

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)
    Draw()

    Repeat
        Event = WaitWindowEvent()

        If Event = #PB_Event_Gadget And EventGadget() = 0 And EventType() = #PB_EventType_MouseMove
            Draw()
        EndIf

    Until Event = #PB_Event_CloseWindow
EndIf

См. также

IsInsideStroke(), FillPath(), ClosePath(), ResetPath()

Поддерживаемые OS

Все

<- FlipCoordinatesY() - Оглавление VectorDrawing - IsInsideStroke()->