Transparenter Bildausschnitt

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Velindos
Beiträge: 598
Registriert: 15.11.2010 10:56

Transparenter Bildausschnitt

Beitrag von Velindos »

Hallo,
möchte ein Bild in ein Bild(transparent) mit einen Ausschnitt einfügen! Darunter verstehe ich;"Ich schneide aus einen Bild einen Bereich aus. Erstelle ein neues transparentes Bild, in dem ich den Ausschnitt positioniere". Wenn ich nun das neue Bild im ImageGaget darstelle soll nur der eingefügte Ausschnitt sichtbar sein und der Rest des Bildes transparent sein.
Hab es Versucht, komme aber mit dem alpha Kanal nicht klar damit! Das Bild verschwindet gänzlich etc., daher der zweite ImageGadget Eintrag! Kann mir jemand helfen?

Code: Alles auswählen

Enumeration
  #VorlageBild
  #TransparenterAusschnittBild
EndEnumeration

;-Images
;{-Image Plugin
UsePNGImageDecoder()
UsePNGImageEncoder()
;}-ende

RedrawPfad$="C:\Bild1.png"
RedrawPfad2$="C:\Bild2.png"

VorlageBild=LoadImage(#VorlageBild, RedrawPfad$) 

TransparenterAusschnittBild=CreateImage(#TransparenterAusschnittBild, 300, 300,32|#PB_Image_Transparent)
;TransparenterAusschnittBild=CreateImage(#TransparenterAusschnittBild, 300, 300)

   StartDrawing(ImageOutput(#TransparenterAusschnittBild))
    DrawAlphaImage(ImageID(#VorlageBild),0,50)
    StopDrawing()
   
   If OpenWindow(0, 0, 0, 400, 500, "Transparenter Bildausschnitt", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
     
     ;ImageGadget(1,50,50,700,500,ImageID(#TransparenterAusschnittBild))
     ImageGadget(1,50,50,700,500,ImageID(#VorlageBild))

     Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
     
   EndIf
Gruss ... Velindos
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.71 LTS (32/64-Bit)
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Transparenter Bildausschnitt

Beitrag von STARGÅTE »

Code: Alles auswählen

StartDrawing(ImageOutput(#TransparenterAusschnittBild))
    DrawingMode(#PB_2DDrawing_AlphaBlend)
    DrawImage(ImageID(#VorlageBild),0,50)
StopDrawing()
Wenn du mit einem 32-Bit Image arbeitest (also das transparente), dann solltest du auch einen Alpha-Mode nutzen.
Dann kannst du auch direkt DrawImage nutzen ...
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
Velindos
Beiträge: 598
Registriert: 15.11.2010 10:56

Re: Transparenter Bildausschnitt

Beitrag von Velindos »

Hallo STARGÅTE,
DANKE für deinen Tip, funktioniert. Wo ich nicht klar komme wie das mit dem Alpha-Mode läuft!

Code: Alles auswählen

             TransparenterAusschnittBild=CreateImage(#TransparenterAusschnittBild, 300, 300,32|#PB_Image_Transparent)
             StartDrawing(ImageOutput(#TransparenterAusschnittBild))
             DrawingMode(#PB_2DDrawing_AlphaChannel|#PB_2DDrawing_AlphaBlend)
             DrawImage(ImageID(#VorlageBild),0,50,300,200)
             ;DrawAlphaImage(ImageID(#VorlageBild),0,50,300,200)
             StopDrawing()
             SaveImage(#TransparenterAusschnittBild,RedrawPfad2$, #PB_ImagePlugin_PNG)
             SetGadgetState(#EndBild, ImageID(#TransparenterAusschnittBild))
Bekomme immer einen schwarzes Bild!
Gruss ... Velindos
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.71 LTS (32/64-Bit)
Antworten