weil du im falschen DrawingMode arbeitest:
Das Image ist beim erstellen gefüllt mit RGBA(0,0,0,255)
Das muss erst mal mit AlphaChannel auf 0 gesetzt werden
Code: Alles auswählen
DrawingMode(#PB_2DDrawing_AlphaChannel)
Box(0,0,ImageWidth(0),ImageHeight(0),$00000000)
danach musst du mit AlphaBlend arbeiten damit die fArbe richtig draufgesetzt wird:
Code: Alles auswählen
UsePNGImageDecoder()
CreateImage(0, 256, 256, 32)
StartDrawing(ImageOutput(0))
DrawingMode(#PB_2DDrawing_AlphaChannel)
Box(0,0,ImageWidth(0),ImageHeight(0),$00000000)
DrawingMode(#PB_2DDrawing_AlphaBlend)
For y = 0 To 255
For x = 0 To 255
Plot(x,y, RGBA(y, 100, 0, x))
Next
Next
StopDrawing()
OpenWindow(0, 0, 0, 500, 500, "Alpha-Test", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
ImageGadget(0, 100, 120, 400, 400, ImageID(0))
Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow
Für sowas habe ich schon mal n Procedure geschrieben:
Code: Alles auswählen
Procedure CreateTransparentImage(Image, Width, Height)
Protected Result = CreateImage(Image, Width, Height, 32)
If Image = #PB_Any : Image = Result : EndIf
If IsImage(Image)
If StartDrawing(ImageOutput(Image))
DrawingMode(#PB_2DDrawing_AlphaChannel)
Box(0,0,ImageWidth(Image),ImageHeight(Image),$00000000)
StopDrawing()
ProcedureReturn Result
EndIf
EndIf
EndProcedure
sie erstellt sofort ein komplett echt transparentes Image (geht mit Index und #PB_any)