IsInsidePath()

Syntaxe

Resultat = IsInsidePath(X.d, Y.d [, CoordonneeSysteme])
Description
Teste si les coordonnées données sont dans une figure fermée dans le chemin du dessin vectoriel en cours.

Arguments

X.d, Y.d Les coordonnées du point à tester.
CoordonneeSysteme (optionnel) Indique le système de coordonnées à utiliser.
Peut être l'une des valeurs suivantes:
  #PB_Coordinate_Device: Le système de coordonnées du dispositif de sortie
  #PB_Coordinate_Output: Le système de coordonnées comme il a été créé avec la fonction de sortie de dessin
  #PB_Coordinate_User  : Le système de coordonnées des points du chemin de dessin (Par défaut)
  #PB_Coordinate_Source: Le système de coordonnées de la source du dessin vectoriel

Valeur de retour

Renvoie une valeur non nulle si le point est dans le chemin, zéro sinon.

Remarques

Cette fonction renvoie une valeur non nulle si le point donné serait comblé par un appel à FillPath().

Voir l'aperçu de VectorDrawing pour une introduction aux différents systèmes de coordonnées.

Exemple

  ; Cet exemple utilise la fonction IsInsidePath() pour colorer la figure en vert
  ; tant que la souris est à l'intérieur du chemin, en bleu sinon
  ;
  Procedure Draw()    
    x = GetGadgetAttribute(0, #PB_Canvas_MouseX)
    y = GetGadgetAttribute(0, #PB_Canvas_MouseY)
  
    If StartVectorDrawing(CanvasVectorOutput(0))
      VectorSourceColor(RGBA(255, 255, 255, 255))   ; efface le contenu précédent
      FillVectorOutput()
      
      AddPathEllipse(200, 100, 150, 75)             ; prépare le chemin
      
      If IsInsidePath(x, y, #PB_Coordinate_Device)  ; vérifie si la souris est à l'intérieur
        VectorSourceColor(RGBA(0, 255, 0, 255))
      Else
        VectorSourceColor(RGBA(0, 0, 255, 255))
      EndIf
      
      FillPath()                                    ; remplit le chemin 
      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

Voir aussi

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

OS Supportés

Tous

<- FlipCoordinatesY() - VectorDrawing Index - IsInsideStroke() ->