Transparente TGA-Bilder mit ImageGadget benutzen?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
PureBasic4.0
Beiträge: 785
Registriert: 29.10.2006 17:26
Wohnort: 127.0.0.1

Transparente TGA-Bilder mit ImageGadget benutzen?

Beitrag von PureBasic4.0 »

Hi, Leute

Ich habe hier folgenden Code:

Code: Alles auswählen

UseTGAImageDecoder()
If LoadImage(1,"logo.tga") = 0
  MessageRequester("Fehler","Die Datei konnte nicht gefunden werden",#MB_ICONSTOP)
  End
EndIf

; PureBasic Visual Designer v3.95 build 1485 (PB4Code)


;- Window Constants
;
Enumeration
  #Window_0
EndEnumeration

;- Gadget Constants
;
Enumeration
  #Image_0
EndEnumeration

Procedure Open_Window_0()
  If OpenWindow(#Window_0, 220, 0, 600, 300, "New window ( 0 )",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
    If CreateGadgetList(WindowID(#Window_0))
      ImageGadget(#Image_0, 10, 20, 600, 140, ImageID(1))
      
    EndIf
  EndIf
EndProcedure


Open_Window_0()

Repeat ; Start of the event loop
  
  Event = WaitWindowEvent() ; This line waits until an event is received from Windows
  
  WindowID = EventWindow() ; The Window where the event is generated, can be used in the gadget procedures
  
  GadgetID = EventGadget() ; Is it a gadget event?
  
  EventType = EventType() ; The event type
  
  ;You can place code here, and use the result as parameters for the procedures
  
  If Event = #PB_Event_Gadget
    
    If GadgetID = #Image_0
      
    EndIf
    
  EndIf
  
Until Event = #PB_Event_CloseWindow ; End of the event loop

End
;
Meine mit Gimp erstellte TGA sieht so aus:

Bild

Wenn ich die Datei aber in ein mit PureBasic erstelltes Fenster lade, sieht es so aus:

Bild

Was mache ich falsch?

P.S.: An alle "nicht-Gimp Benutzer": Das grau gekästelte bedeutet Transparenz.
PB 4.50 RC1 + Ubuntu 10.04 LTS + Windows 7 x64
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

PB-Hilfe hat geschrieben:Die TGA Alphachannel Information (wenn vorhanden) wird derzeit ignoriert.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
PureBasic4.0
Beiträge: 785
Registriert: 29.10.2006 17:26
Wohnort: 127.0.0.1

Beitrag von PureBasic4.0 »

und das heißt?

Wie kann ich dann transparente Bilder in einem ImageGadget benutzen? Bzw. in welchem Dateiformat muss ich diese dann abspeichern?
PB 4.50 RC1 + Ubuntu 10.04 LTS + Windows 7 x64
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

PureBasic4.0 hat geschrieben:Wie kann ich dann transparente Bilder in einem ImageGadget benutzen? Bzw. in welchem Dateiformat muss ich diese dann abspeichern?
Egal, transparent wird zur Zeit nicht Unterstützt. Jedenfalls von den
ImagePlugins. Image in der Hintergrundfarbe des Fensters einfärben wäre
eine simple Möglichkeit
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
PureBasic4.0
Beiträge: 785
Registriert: 29.10.2006 17:26
Wohnort: 127.0.0.1

Beitrag von PureBasic4.0 »

OK. Transparenz wird derzeit nicht unterstützt - Ist es vielleicht möglich, das Bild als Sprite zu laden, dem eine TransparentSpriteColor zuzuordnen und das ganze in ein Image zu Konvertieren?
PB 4.50 RC1 + Ubuntu 10.04 LTS + Windows 7 x64
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Probiere es aus. Aber PNG mußte nehmen, mit passenden parametern.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Glaube nicht, dass das geht. Ich würde es an deiner Stelle mit StartDrawing(WindowOutput()) und DrawAlphaImage() auf das Fenster zeichnen. DrawALphaImage() unterstützt wenigstens den Alphakanal von PNGs und TIFFs.
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

sprites geht nicht.
probier DrawALphaImage(), wie von AND vorgeschlagen.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
PureBasic4.0
Beiträge: 785
Registriert: 29.10.2006 17:26
Wohnort: 127.0.0.1

Beitrag von PureBasic4.0 »

@AND51: Sowas habe ich gebraucht. Ich zeichne das transparente Sprite einfach aufs Window. Darauf bin ich auch nicht gekommen.

@all: Danke für eure Mithilfe.
PB 4.50 RC1 + Ubuntu 10.04 LTS + Windows 7 x64
Antworten