Icon und Transparenz

Anfängerfragen zum Programmieren mit PureBasic.
ThoPie
Beiträge: 130
Registriert: 19.05.2006 15:18
Kontaktdaten:

Icon und Transparenz

Beitrag von ThoPie »

Hallo,
ich nutze ein ImageGadget um ein Icon (48x48, 32bit mit Alpha-Kanal) anzuzeigen.
Zum Füllen nutze ich

Code: Alles auswählen

SetGadgetState(#image,ImageID(#icon))
Hier wird dann der Hintergrund grau angezeigt. Erst bei einem erneuten Aufruf von

Code: Alles auswählen

SetGadgetState(#image,ImageID(#icon))
wird das Icons transparent.
Was mache ich da falsch?
Vielen Dank.
Bild
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

Re: Icon und Transparenz

Beitrag von ts-soft »

Ich vermute mal das eventloop wird zu lange verlassen. Weil SetGadgetState erfordert, wie alle anderen
Gadgetsachen auch, einen EventLoop, selbst wenn dieser leer ist, um die Darstellung zu aktualisieren.
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
ThoPie
Beiträge: 130
Registriert: 19.05.2006 15:18
Kontaktdaten:

Re: Icon und Transparenz

Beitrag von ThoPie »

Ach so.
Also ist wohl der doppelte Aufruf zwar nicht elegant, aber wohl die beste Lösung?
Bild
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

Re: Icon und Transparenz

Beitrag von ts-soft »

ThoPie hat geschrieben:Ach so.
Also ist wohl der doppelte Aufruf zwar nicht elegant, aber wohl die beste Lösung?
Die Lösung ist Müll, weil die nicht unbedingt auf jeder Windows-Version erfolg verspricht.

Für die richtige Lösung müßte ich den Code-Aufbau sehen. Sollte das ganze am Anfang,
bevor das EventLoop existiert, passieren, wäre es wohl sinnvoll das Fenster erst anzuzeigen,
wenn es aufgebaut ist. Dann könnte man auch ein:

Code: Alles auswählen

While WindowEvent() : Wend
einbauen. Aber nur dann!
Ansonsten mußte Deinen Code umstrukturieren, weil es werden dann bestimmt an anderen
Stellen auch die Events nicht richtig bearbeitet, was ja nicht immer gleich zu falscher Dar-
stellung führt.
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
Antworten