CustomGradient()

Syntaxe

CustomGradient(@GradientCallback())
Description
Crée un dégradé avec une forme personnalisée.

Arguments

@GradientCallback() L'adresse de la procédure de callback.

La procédure doit avoir la forme suivante:
  Procedure.f GradientCallback(X, Y)
    ;
    ; Renvoie une valeur entre 0.0 et 1.0 pour définir le dégradé à la position x,y
    ; 
    ProcedureReturn 1.0
  EndProcedure
La procédure sera appelée pour chaque pixel affiché par l'opération de dessin.
La procédure doit renvoyer une valeur comprise entre 0.0 and 1.0 (pas une valeur de couleur) pour définir la valeur du dégradé à une position donnée.

Les coordonnées X et Y sont toujours orientées par rapport au coin supérieur gauche de la surface de dessin.
Les coordonnées ne sont pas affectées par les appels à SetOrigin() ou à ClipOutput().

Valeur de retour

Aucune.

Remarques

Par défaut, la valeur 0.0 représente la couleur d'arrière plan et la valeur 1.0 représente la couleur d'avant plan.

Des couleurs additionnelles peuvent être ajoutées au dégradé avec GradientColor().

Cette procédure sera appelée de nombreuse fois (pour chaque pixel à appeler), donc elle devra être la plus courte et la plus optimisée possible, sinon l'impact sur les performances de dessin sera conséquent.

Note: Cette commande a un effet uniquement sur des surfaces de type ImageOutput() et CanvasOutput(). Le dégradé est dessiné uniquement si le mode #PB_2DDrawing_Gradient est activé avec DrawingMode().

Exemple

  Procedure.f GradientCallback(X, Y)
    ProcedureReturn Sin(x * 0.1) * Sin(y * 0.1) ; Valeur comprise entre 0 et 1
  EndProcedure

  If OpenWindow(0, 0, 0, 400, 200, "CustomGradient", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
    If CreateImage(0, 400, 200) And StartDrawing(ImageOutput(0))
      Box(0, 0, 400, 200, $FFFFFF)
      
      DrawingMode(#PB_2DDrawing_Gradient)      
      BackColor($00FFFF)
      FrontColor($FF0000)
      
      CustomGradient(@GradientCallback())
      Circle(100, 100, 100)   
      Circle(300, 100, 100)
      
      StopDrawing() 
      ImageGadget(0, 0, 0, 400, 200, ImageID(0))
    EndIf
    
    Repeat
      Event = WaitWindowEvent()
    Until Event = #PB_Event_CloseWindow
  EndIf

Voir aussi

GradientColor(), ResetGradientColors(), LinearGradient(), CircularGradient(), EllipticalGradient(), BoxedGradient(), ConicalGradient(), DrawingMode()

OS Supportés

Tous

<- CustomFilterCallback() - 2DDrawing Index - DrawAlphaImage() ->