PureBasic

IsInsideStroke()

Синтаксис

Result = IsInsideStroke(x.d , y.d , Width.d [, Flags [, CoordinateSystem]])

Описание


Эта функция проверяет, попадает ли точка с указанными координатами на линию обводки Векторного контура, которая будет сделана функцией StrokePath() с заданными параметрами.

Параметры

x.d, y.d Координаты точки, которую требуется проверить.
Width.d Задаёт толщину линии обводки, точка будет проверяться по всей толщине обводки.
Flags (дополн.) Определяет дополнительные характеристики линии обводки. Это может быть комбинацией следующих значений:
  #PB_Path_Default       : Без специальных опций (по умолчанию).
  #PB_Path_Preserve      : Не сбрасывать текущий Векторный контур после вызова этой функции.
  #PB_Path_RoundEnd      : Рисует линии с закруглёнными наконечниками.
  #PB_Path_SquareEnd     : Рисует линии с квадратными наконечниками.
  #PB_Path_RoundCorner   : Рисует линии с закругленными углами.
  #PB_Path_DiagonalCorner: Рисует линии с углами срезанными под 45 гр.
CoordinateSystem (дополн.) Определяет используемую для точки систему координат. Этот параметр может быть одним из следующих значений:
  #PB_Coordinate_Device: Система координат (физических) устройства вывода.
  #PB_Coordinate_Output: Система координат устройства вывода, с выбранной единицей измерения. 
  #PB_Coordinate_User  : Система координат используемая для точек Векторного контура.
  #PB_Coordinate_Source: Система координат используемая для источника рисования в векторной графике.

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

Возвращает не нулевое значение, если точка попадает в линию обводки Векторного контура, в противном случае 0.

Комментарии

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

Пример

; В этом примере используется функция IsInsideStroke(), чтобы окрасить фигуру в зеленый цвет,
; когда курсор мыши находится на ее контуре, и синим - в противном случае.
;
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 IsInsideStroke(x, y, 20, #PB_Path_Default, #PB_Coordinate_Device) ; Проверяем, попадает ли курсор мыши на линию обводки.
            VectorSourceColor(RGBA(0, 255, 0, 255))
        Else
            VectorSourceColor(RGBA(0, 0, 255, 255))
        EndIf

        StrokePath(20) ; Обводим контур.
        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

См. также

IsInsidePath(), StrokePath(), ResetPath()

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

Все

<- IsInsidePath() - Оглавление VectorDrawing - IsPathEmpty()->