AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Bitmap transparent aus TImageList holen

Ein Thema von amigage · begonnen am 27. Feb 2019 · letzter Beitrag vom 1. Mär 2019
Antwort Antwort
Seite 2 von 3     12 3   
EWeiss
(Gast)

n/a Beiträge
 
#11

AW: Bitmap transparent aus TImageList holen

  Alt 28. Feb 2019, 13:41
Ahja, tut mir Leid, falscher Begriff. Wo soll die Bitmap schlußendlich angezeigt werden? Ein TImage kann auch PNG, und TSpeedButton ebenso. Ich will eigentlich nur sagen: es werden endlich "moderne" Bilddatentypen unterstützt. Warum nicht nutzen?

Sherlock
Das Image oder Bitmap wird transparent ins ImageList kopiert (gezeichnet) danach kannst du die ImageList weiterhin auf normalem weg benutzen ohne dazwischen irgend etwas konvertieren zu müssen.
Der einzige unterschied ist halt das dann der Bildstrip (Ist ja nur ein einzelnes Bitmap in der ImageList) transparent ist.

btw. Die beste Methode ist natürlich die ImageList direkt mit dem korrekten Format zu befüllen in dem fall wie du schon sagst *.png
Bin mir nur nicht sicher ob das von der IDE (Resourcen Editor) unterstützt wird.

gruss

Geändert von EWeiss (28. Feb 2019 um 13:54 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.383 Beiträge
 
Delphi 10.3 Rio
 
#12

AW: Bitmap transparent aus TImageList holen

  Alt 28. Feb 2019, 14:05
btw. Die beste Methode ist natürlich die ImageList direkt mit dem korrekten Format zu befüllen in dem fall wie du schon sagst *.png
Bin mir nur nicht sicher ob das von der IDE (Resourcen Editor) unterstützt wird.
Der Kollege amigage setzt Rio ein, und das unterstützt PNGs in ImageListen.

Sherlock
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#13

AW: Bitmap transparent aus TImageList holen

  Alt 28. Feb 2019, 14:12
btw. Die beste Methode ist natürlich die ImageList direkt mit dem korrekten Format zu befüllen in dem fall wie du schon sagst *.png
Bin mir nur nicht sicher ob das von der IDE (Resourcen Editor) unterstützt wird.
Der Kollege amigage setzt Rio ein, und das unterstützt PNGs in ImageListen.

Sherlock
Ok, dann gebe ich dir recht soll einfach *.png verwenden und gut ist.
Diese alternative sollte aber bei D7 und Delphi Versionen funktionieren wo *.png Nicht mit dem Ressourcen Editor addiert werden können.

gruss
  Mit Zitat antworten Zitat
amigage

Registriert seit: 11. Nov 2005
Ort: Leipzig
224 Beiträge
 
Delphi 10.3 Rio
 
#14

AW: Bitmap transparent aus TImageList holen

  Alt 28. Feb 2019, 15:11
Versuch nicht, die Bitmap aus der Imagelist zu holen
Muss ich aber, weil ich die die Grafiken eigentlich in einem Listview verwenden will. Das mit dem Button war erst einmal ein Test, die Grafiken generell transparent zu bekommen.

Mein eigentliches Anliegen ist folgendes:
Der Anwender soll als "Customizing" im Programm seine eigenen Symbole auswählen können, die in einem Listview als grafische Unterstützung einer Ordnerstruktur angezeigt werden sollen. Jedem Eintrag soll eine spezielle Grafik zugewiesen werden können.

Die ausgewählten Grafiken werden in einer Imagelist abgelegt und am Ende in einem Stream als Datei gespeichert, mitsamt anderer Daten, die verwendet werden.

Beim nächsten Start soll dieser Stream wieder geladen werden, und die einzelnen Grafiken in der Imagelist eingefügt werden. Anhand des ImageIndex wird die Grafik im Listview angezeigt.

Das funktioniert soweit auch ganz gut, bis auf die Transparenz! Die geht verloren.

Zum Laden verwende ich TBitmap.CreateFromStream(IconStream); wobei IconStream : TMemoryStream; definiert ist. Und dann übergebe ich die gelesenen Grafiken der Imagelist, wobei TIconData(IconList[i]).Icon die Grafik beinhaltet:

Delphi-Quellcode:
for i := 0 to IconList.Count - 1 do
begin
   ii := ImageListLeft32.AddMasked(TIconData(IconList[i]).Icon, clFuchsia);
   ImageListLeft32.Draw(Canvas, 0, 0, ii);
end;
Vielleicht ist mein Ansatz auch grundlegend falsch und ich müsste es anders angehen.
Für einen Tipp wäre ich dankbar.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#15

AW: Bitmap transparent aus TImageList holen

  Alt 28. Feb 2019, 15:15
Zitat:
Für einen Tipp wäre ich dankbar.
Habe dir Tips gegeben wenn diese nicht reichen sorry mehr geht nicht!

Du verstehst einfach nicht das in RIO die Bitmaps nicht transparent abgelegt werden das musst du selbst tun.
Wie das geht habe ich gezeigt.

Verstehe nicht was da so schwer ist das umzusetzen.
Ok bin raus

gruss

Geändert von EWeiss (28. Feb 2019 um 15:18 Uhr)
  Mit Zitat antworten Zitat
amigage

Registriert seit: 11. Nov 2005
Ort: Leipzig
224 Beiträge
 
Delphi 10.3 Rio
 
#16

AW: Bitmap transparent aus TImageList holen

  Alt 28. Feb 2019, 15:35
Sorry @EWeiss. Deinen Sourcecode habe ich nicht wirklich wahrgenommen.
Den werde ich mir natürlich einmal anschauen, denn genau das möchte ich, dass die Grafiken in der Imagelist zur Laufzeit transparent gesetzt werden.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#17

AW: Bitmap transparent aus TImageList holen

  Alt 28. Feb 2019, 19:51
Hatte gerade etwas zeit.
In der ImageList befinden sich Bitmaps in 24Bit Format. Ohne Transparenz\Alpha.

gruss

Geändert von EWeiss (11. Jul 2019 um 17:00 Uhr)
  Mit Zitat antworten Zitat
amigage

Registriert seit: 11. Nov 2005
Ort: Leipzig
224 Beiträge
 
Delphi 10.3 Rio
 
#18

AW: Bitmap transparent aus TImageList holen

  Alt 1. Mär 2019, 14:51
Hallo und danke für den Quellcode.

Leider hilft mir das nicht 100%ig weiter. Wie oben beschrieben, benötige ich die Grafiken in einem Listview, der die Images über den ImageIndex steuert.

In Deinem Beispiel, wird der Inhalt der ImageList in eine BMP und PNG Datei gespeichert, wobei letztere dann in ein TImage geladen wird.

Erstens, wäre die Lösung über einen MemoryStream eleganter, aber eine solche Funktion scheint es wohl nicht in GDI zu geben?
Und wie bringe ich dann die transparente Grafik in den Listview?
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#19

AW: Bitmap transparent aus TImageList holen

  Alt 1. Mär 2019, 14:56
Zitat:
In Deinem Beispiel, wird der Inhalt der ImageList in eine BMP und PNG Datei gespeichert
Ja um zu dokumentieren das der Inhalt vom ImageList Transparent ist.

Du kannst auf das speichern verzichten und anschließend direkt die Images aus der ImageList laden.
Die sind zu diesen Zeitpunkt Transparent.

Ein bisschen musst du auch selber machen

gruss
  Mit Zitat antworten Zitat
amigage

Registriert seit: 11. Nov 2005
Ort: Leipzig
224 Beiträge
 
Delphi 10.3 Rio
 
#20

AW: Bitmap transparent aus TImageList holen

  Alt 1. Mär 2019, 15:25
Du hast Recht, es funktioniert
Also, erst die ImageList transparent setzen lassen und dann ganz normal die Listview füllen.
Jetzt habe ich es verstanden. Sorry, wenn ich dich aufgrund meiner Unwissenheit genervt haben sollte
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf