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 EndProcedureLa 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