@Kaeru:
Kaeru Gaman hat geschrieben:... der bemalte Fensterhintergrund dient nur dazu um zu zeigen, dass das ImageGadget wirklich nicht sichbar ist, ...
Du weisst aber schon, dass Du durch das Zeichnen auf WindowsOutput() NACH dem Erstellen eines Gadgets JEGLICHES ImageGadget überschreibst - egal ob es zuvor sichtbar war oder nicht?
Falls Du Deine AlphaBlend-Versuche zum ImageGadget also auf diesem Wege gemacht hast kannst Du nicht davon ausgehen dass das erstellte ImageGadget auch tatsächlich transparent war - denn Du hast es ja in jedem Falle übermalt.
Meine Versuche mit einem selbst erstellten Image ein unsichtbares (oder durchsichtiges) ImageGadget zu erzeugen schlugen zumindest allesamt fehl - vielleicht aber auch deswegen weil mein selbst erstellte Image nicht durchsichtig war.
Ich meine mich dran erinnern zu können dass der AlphaChannel eines mit PB erstellten Images nach CreateImage() komplett auf undurchsichtig steht und es Probleme gab diesen zu ändern (da gab es glaube ich mal im englischen Forum einen Thread zu).
Somit könnte es also doch sein dass das AlphaBlending mit ImageGadgets() funnzt - mir nur die Erstellung eines undurchsichtigen Images nicht gelungen ist.
Aber der "Trick" mit ImageID=0 ein "durchsichtiges" ImageGadget zu erstellen ist nicht übel.

Ich wäre nie auf die Idee gekommen das zu versuchen, da ich erwartet hätte in einem solchen Fall eine Fehlermeldung zu bekommen.
[Nachtrag:]
Ahh ... hab's gefunden:
Code: Alles auswählen
; Leeren des Alpha-Channels
DrawingMode(#PB_2DDrawing_AlphaChannel)
Box(0, 0, ImageWidth(0), ImageHeight(0), $00000000)
Kleines Bspl. für transparentes ImageGadget (für den, den interessiert):
Code: Alles auswählen
If CreateImage(0,100,50,32)
If StartDrawing(ImageOutput(0))
DrawingMode(#PB_2DDrawing_AlphaChannel)
Box(0, 0, 100, 50, $00000000)
DrawingMode(#PB_2DDrawing_AlphaBlend)
LineXY(0,0,100,50,$ffff0000)
LineXY(0,50,100,0,$ff0000ff)
StopDrawing()
EndIf
EndIf
If CreateImage(1,320,200,#PB_Image_DisplayFormat)
If StartDrawing(ImageOutput(1))
DrawingMode(#PB_2DDrawing_Gradient)
LinearGradient(0,0,320,200)
GradientColor(0.0,RGB(243, 16, 0))
GradientColor(0.25,RGB(19, 16, 236))
GradientColor(0.50,RGB(123, 169, 56))
GradientColor(0.75,RGB(252, 250, 52))
GradientColor(1.0,RGB(243, 16, 0))
Box(0,0,320,200)
StopDrawing()
EndIf
EndIf
If OpenWindow(0, 0, 0, 320, 200, "Transparent ImageGadget", #PB_Window_ScreenCentered | #PB_Window_SystemMenu | #PB_Window_Invisible)
hbrBackground = CreatePatternBrush_(ImageID(1))
SetClassLong_(WindowID(0),#GCL_HBRBACKGROUND,hbrBackground)
ImageGadget(0, 20, 20, 0, 0, ImageID(0),#PB_Image_Border )
ImageGadget(1, 180, 100, 0, 0, ImageID(0))
HideWindow(0,0)
Repeat
Event = WaitWindowEvent()
EvTyp = EventType()
If EvTyp = #PB_EventType_LeftClick Or EvTyp = #PB_EventType_RightClick
Debug "Click on image"
EndIf
Until Event = #PB_Event_CloseWindow
EndIf