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() Gibt die Adresse einer Callback-Funktion an, 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.
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().
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/sources/data/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