besten Dank für eure Tips, habe sie in die Lösung eingearbeitet. Letzteren geht ein transparentes Image nur im Format *.PNG. Des nächsten habe ich das in Procedure geändert. Hiier die korriegerte Version:
Code: Alles auswählen
;- Window Constants
Enumeration
#FrameMain
EndEnumeration
;- Gadget Constants
Enumeration
#B_Exit
#B_Memory
#B_ClearBild
#I_Bild
#I_Bild2
#T_Text
#S_PopUpBild
#PopUpHorizontal
EndEnumeration
;-Image Constants
UsePNGImageDecoder()
UsePNGImageEncoder()
UseJPEGImageDecoder()
UseJPEGImageEncoder()
;-Image Constants
Enumeration
#SaveImage
#NeuesImage
#Img2=1
#Image
#Image2
EndEnumeration
;-Glcbal Constans
Global MemSize
Global *ImageMemory
Global Img2
Global Image2
;-Proceduren
Procedure SaveImageToMemory(Image, *MemSize, Format = #PB_ImagePlugin_PNG, Compression = 7) ;<=== Hier muss PNG rein
Protected *Mem, MemSize, ImageDataPipe
MemSize = ImageDepth(Image)*ImageHeight(Image)*ImageWidth(Image)
*Mem = AllocateMemory(MemSize)
ImageDataPipe = CreateNamedPipe_("\\.\pipe\ImageDataPipe", #PIPE_ACCESS_INBOUND | #FILE_FLAG_OVERLAPPED, #PIPE_TYPE_BYTE | #PIPE_READMODE_BYTE | #PIPE_NOWAIT, 1, MemSize, MemSize, #NMPWAIT_USE_DEFAULT_WAIT, #Null)
SaveImage(Image, "\\.\pipe\ImageDataPipe", Format, Compression)
ReadFile_(ImageDataPipe, *Mem, MemSize, *MemSize, #Null)
CloseHandle_(ImageDataPipe)
ProcedureReturn *Mem
EndProcedure
;-Windows
OpenWindow(#FrameMain, 0, 0, 640, 480, "Tranparentes Image überzeichnen", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
If CreatePopupMenu(#S_PopUpBild)
MenuItem(#PopUpHorizontal, "Horizonatles Einfügen")
EndIf
ButtonGadget(#B_Exit,490,20,60,20,"EXIT")
ButtonGadget(#B_Memory,420,20,60,20,"Memory")
ButtonGadget(#B_ClearBild,20,20,60,20,"Clear")
TextGadget(#T_Text,100,20,320,20,"Bild kopieren und mit Rechtsklick ins linke Gadget Einfügen")
ImageGadget(#I_Bild, 20, 50, 230, 240, myDisplay, #PB_Image_Border)
ImageGadget(#I_Bild2, 270, 50, 230, 240, myDisplay, #PB_Image_Border)
;-Windows Start
;-Event´s
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow: End
Case #PB_Event_Gadget
Select EventGadget()
;Case #B_Dateiladen: Open_Windows_1()
;Case #B_OpenDatei: OpenDatei()
Case #B_Exit: End
Case #I_Bild
Select EventType()
Case #PB_EventType_RightClick
DisplayPopupMenu(#S_PopUpBild, WindowID(#FrameMain))
EndSelect
Case #B_Memory
Img2 = CatchImage(#Image2, *ImageMemory, @MemSize) ;Variante 2
SetGadgetState(#I_Bild2,img2) ; Variante 2
SetClipboardImage(#I_Bild2)
Case #B_ClearBild
Global NeuesImage=CreateImage(#NeuesImage,230,240,32|#PB_Image_Transparent )
SetGadgetState(#I_Bild, ImageID(#NeuesImage))
EndSelect
; Case für Menue
Case #PB_Event_Menu
Select EventMenu()
;- Bild UpHorizontal
Case #PopUpHorizontal; "Horizonatles Einfügen")
If GetClipboardImage(#SaveImage)
ResizeImage (#SaveImage,230,153)
breite=230
hoehe=240
;1 Variante
If CreateImage(#NeuesImage,breite,hoehe,32|#PB_Image_Transparent )
If StartDrawing(ImageOutput(#NeuesImage))
Debug "Hat geklappt!"
DrawingMode(#PB_2DDrawing_AlphaBlend) ; HIER DAS HIER !! JUHUUU
DrawAlphaImage(ImageID(#SaveImage),0,44)
;* DrawImage(ImageID(#SaveImage),0,44)
StopDrawing()
*ImageMemory = SaveImageToMemory(#NeuesImage, @MemSize)
SetGadgetState(#I_Bild, ImageID(#NeuesImage))
Else
Debug "!StartDrawing"
EndIf
EndIf
EndIf
EndSelect
EndSelect
ForEver
Gruss ... Velindos