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
Der Callback 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 und zurückzugeben, die der Zielpixel nach dem Zeichnen haben soll.
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 rote 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 Example", #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
Unterstützte OS
Alle