Ich hab mal versucht, einen weißen Bereich in einem schwarzen Quadrat mit einem vorgegebenen Muster zu füllen.
Natürlich "zu Fuß"

Code: Alles auswählen
; Bereich_mit_Muster_füllen_2.pb
; scholly
musterfile.s = #PB_Compiler_Home+"examples\sources\Data\clouds.jpg"
UseJPEGImageDecoder()
If LoadFont(1, "Arial", 64,#PB_Font_Bold) = 0
Debug "font nich jefunden"
End
EndIf
Procedure move_texture_to_box()
For line = 1 To 256
For column = 1 To 256
StartDrawing(ImageOutput(2))
mask_color = Point(column,line)
StopDrawing()
If mask_color = #White ;nur dann brauchen wir das Muster
StartDrawing(ImageOutput(1))
thiscolor = Point(column,line)
StopDrawing()
StartDrawing(ImageOutput(3))
Plot(column,line, thiscolor)
StopDrawing()
EndIf
Next column
Next line
EndProcedure
If OpenWindow(0, 0, 0, 900, 300, "ImageGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) And CreateGadgetList(WindowID(0))
If LoadImage(1, musterfile.s)
ImageGadget(1, 10, 10, 256, 256, ImageID(1))
Else
Debug "error: LoadImage(0, musterfile.s)"
EndIf
If CreateImage(2, 256, 256)
StartDrawing(ImageOutput(2))
DrawingFont(FontID(1))
DrawText(20,64,"Hallo",#White,#Black)
StopDrawing()
ImageGadget(2, 286, 10, 256, 256, ImageID(2))
Else
Debug "error: CreateImage(1, 256, 256)"
EndIf
If CreateImage(3, 256, 256)
move_texture_to_box()
ImageGadget(3, 586, 10, 256, 256, ImageID(3))
Else
Debug "error: CreateImage(3, 256, 256)"
EndIf
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
End
Ich bin mir aber sicher, es gibt eine einfachere und schneller Möglichkeit, als meine Procedure move_texture_to_box().
Mag (mir) jemand den effizienten Ersatz zeigen ?
mDv... scholly
[Edit 1:] Text statt Box zeichnen