Vielleicht kannst du dann mein Geschriebenes nachvollziehen...
Edit :
Code: Alles auswählen
EnableExplicit
UsePNGImageDecoder()
Enumeration
#window_0
EndEnumeration
DataSection
pic_1_Start:
IncludeBinary "splash.png"
pic_1_End:
EndDataSection
Procedure WindowBackground(Window.i, Image.i)
Protected WindowID.i = WindowID(0)
Protected ImageID.i = ImageID(Image)
Protected HDC.i = CreateCompatibleDC_(#Null)
Protected Object.i = SelectObject_(HDC, ImageID)
Protected Size.Size
Size\cx = ImageWidth(Image)
Size\cy = ImageHeight(Image)
Protected Point.Point
Protected Blend.BLENDFUNCTION
Blend\SourceConstantAlpha = 255
Blend\AlphaFormat = 1
SetWindowLong_(WindowID, #GWL_EXSTYLE, GetWindowLong_(WindowID, #GWL_EXSTYLE) | #WS_EX_LAYERED)
UpdateLayeredWindow_(WindowID, 0, 0, @Size, HDC, @Point, 0, @Blend, 2)
SelectObject_(HDC, Object)
DeleteDC_(HDC)
EndProcedure
Define pic_1 ; Das PNG Bild
Define pic_2 ; Das Bild auf dem gezeichnet wird
OpenWindow(#Window_0, 0, 0, 420, 520, "Screen", #PB_Window_ScreenCentered|#PB_Window_BorderLess)
; Man muss den Variablen Werte zuweisen
pic_1 = CatchImage(#PB_Any, ?Pic_1_Start, ?Pic_1_End - ?Pic_1_Start) ; PNG aus Datasection holen
pic_2 = CreateImage(#PB_Any,887,520,32,#PB_Image_Transparent) ; Bild 2 erstellen
; Beginne Malerei
If StartDrawing(ImageOutput(pic_2)) ; <- auf unser Zeichenbrett pinseln
DrawAlphaImage(ImageID(pic_1),0,0,255) ; PNG Bild auf unser Zeichenbrett malen (Es ist ein PNG mit A L P H A !)
DrawingMode(#PB_2DDrawing_AlphaBlend) ; Spielkram
RoundBox(262,12,120,40,9,9,RGBA(255,255,255,255))
DrawingMode(#PB_2DDrawing_AlphaBlend|#PB_2DDrawing_Transparent)
DrawText(270, 16, "Aaaah", RGBA(0,0,0,255))
DrawText(270, 16 + TextHeight("M"), "so geht das !", RGBA(0,0,0,255))
StopDrawing()
EndIf
WindowBackground(#window_0, pic_2) ; Unser Zeichenbrett ist fertig also als Hintergrund verwenden.
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow ; Die obligatorische Eventloop, sonst sehn wir ja nix...
