CustomGradient()

Syntaxe

CustomGradient(@GradientCallback())
Description
Configure le dégradé pour qu'il utilise une forme arbitraire, en utilisant une procédure.

Arguments

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 retourner 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.

Par défaut, la valeur 0.0 représente la couleur de fond 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(). 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) ; will be between 0 and 1
  EndProcedure

  If OpenWindow(0, 0, 0, 400, 200, "2DDrawing Example", #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

OS Supportés

Tous

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