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
  EndProcedure
Der 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

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