CustomGradient()
Syntax
CustomGradient(@GradientCallback())Beschreibung
Weist dem Farbverlauf eine benutzerdefinierte Form zu, definiert durch die angegebene Callback-Prozedur.
Parameter
@GradientCallback() Die Adresse der Callback-Prozedur, welche den Farbverlauf definiert. Der Callback muss die folgende Form haben: Procedure.f GradientCallback(x, y) ; ; Gibt einen Wert zwischen 0.0 und 1.0 zurück, um den Farbverlauf für die x/y Position zu definieren. ; ProcedureReturn 1.0 EndProcedureDer Callback wird für jeden Pixel aufgerufen, der Teil der Zeichenoperation ist. Der Callback muss einen Wert zwischen 0.0 und 1.0 (keinen Farbwert) zurückgeben, um den Farbverlaufs-Wert an der angegebenen Position zu definieren.
Die im Callback empfangenen x und y Koordinaten sind immer relativ zu oberen linken Ecke der Zeichenausgabe. Die Koordinaten werden durch Aufrufe von SetOrigin() oder ClipOutput() nicht beeinflusst.
Rückgabewert
Diese Funktion gibt keinen Wert zurück.
Anmerkungen
Standmäßig repräsentiert der Wert 0.0 die aktuelle Hintergrundfarbe und der Wert 1.0 repräsentiert die aktuelle Zeichenfarbe. Zusätzliche Farben können zum Farbverlauf mit dem Befehl GradientColor() hinzugefügt werden.
Dieser Callback wird sehr oft aufgerufen (für jeden zu zeichnenden Pixel), weshalb er sehr klein und schnell sein sollte, um nicht zu große Auswirkungen auf die Zeichen-Performanz zu haben.
Hinweis: Dieser Befehl hat nur eine Wirkung bei ImageOutput() und CanvasOutput(). Der Farbverlauf wirkt sich nur dann auf die Zeichenbefehle aus, wenn #PB_2DDrawing_Gradient mit dem DrawingMode() Befehl gesetzt wurde.
Beispiel
Procedure.f GradientCallback(x, y) ProcedureReturn Sin(x * 0.1) * Sin(y * 0.1) ; wird zwischen 0 und 1 liegen EndProcedure If OpenWindow(0, 0, 0, 400, 200, "2DDrawing Beispiel", #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
Siehe auch
GradientColor(), ResetGradientColors(), LinearGradient(), CircularGradient(), EllipticalGradient(), BoxedGradient(), ConicalGradient(), DrawingMode()
Unterstützte OS
Alle