CustomFilterCallback()
Syntax
CustomFilterCallback(@FilterCallback())Beschreibung
Bestimmt einen Callback, welcher für jeden Pixel aufgerufen wird, der Teil einer Zeichenoperation im #PB_2DDrawing_CustomFilter Zeichenmodus ist.
Parameter
@FilterCallback() Die Adresse einer Callback-Funktion, welche aufgerufen werden soll. Sie muss die folgende Form haben: Procedure CustomCallback(x, y, QuellFarbe, ZielFarbe) ; ; Berechne die ErgebnisFarbe anhand der gemachten Eingaben ; ProcedureReturn ErgebnisFarbe EndProcedureDer Callback wird für jeden Pixel aufgerufen, der als Ergebnis eines Aufrufs von Zeichenfunktionen wie Line(), Box() oder DrawText() gezeichnet wird. Der Parameter 'QuellFarbe' definiert die in der Zeichenoperation angegebene Farbe und der Parameter 'ZielFarbe' definiert die Farbe des Zielpixels im Zeichenbereich. Beide Farben sind immer 32 Bit mit Alpha-Kanal - unabhängig von der Farbtiefe der Ausgabe. Der Callback hat die Farbe zu berechnen, die der Zielpixel nach dem Zeichnen haben soll, und diese zurückzugeben.
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
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: Der #PB_2DDrawing_CustomFilter Zeichenmodus arbeitet nur mit ImageOutput() und CanvasOutput().
Beispiel
Procedure FilterCallback(x, y, QuellFarbe, ZielFarbe) ; Nehme nur die Rot-Komponente aus der Quelle, ändere nicht die anderen ProcedureReturn RGBA(Red(QuellFarbe), Green(ZielFarbe), Blue(ZielFarbe), Alpha(ZielFarbe)) EndProcedure UseJPEGImageDecoder() If OpenWindow(0, 0, 0, 400, 200, "2DDrawing Beispiel", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) LoadImage(1, #PB_Compiler_Home + "examples/3d/Data/Textures/clouds.jpg") If CreateImage(0, 400, 200) And StartDrawing(ImageOutput(0)) DrawImage(ImageID(1), 0, 0, 400, 200) DrawingMode(#PB_2DDrawing_CustomFilter) CustomFilterCallback(@FilterCallback()) Circle(100, 100, 100, $0000FF) Circle(300, 100, 100, $000000) StopDrawing() ImageGadget(0, 0, 0, 400, 200, ImageID(0)) EndIf Repeat Event = WaitWindowEvent() Until Event = #PB_Event_CloseWindow EndIf
Siehe auch
DrawingMode(), CustomGradient()
Unterstützte OS
Alle