![]() |
Transparenz ist nicht gut genug
Hallo Wissende!
Ich habe ein Bild auf meinem Formular platziert und lege nun ein TImage darüber. In diesem TImage lade ich ein Bitmap, welches ich in 24 Bit-Qualität abgespeichert habe, weil ich es mit transparenz benötige. Es ist bei 100% geradeso akzeptabel, aber sobal ich die Grösse minimiere wird es grottenschlecht. Was kann ich tun. Ich habe mir die Grafix32 gezogen und installiert, aber dort scheinen nur Bitmaps zu gehen und man muss noch einen Extra-Aplha-Channel angeben. Warum loben das alle über den Klee, wenn da nicht mal png zu laden geht? Wie kann ich das mit den Transparenzen lösen??? Oder kann ich etwas anderes mit Bitmap32 probieren? Gibt es etwas ähnliches wie TImage, wo ich Bilder hineinladen kann, die dann aber eine Transparenz haben? |
Re: Transparenz ist nicht gut genug
Zitat:
Zitat:
![]() |
Re: Transparenz ist nicht gut genug
Nein eigentlich bin ich mir sicher, dass Photoshop mich danach fragt, ob ich das BMP als 24-Bit-Datei abspeichern will und dass mir selbst IrfanView diese Datei als 24-Bit-Datei ausgibt. Mir bekannt ist, dass TGA-Dateien einen Alpha besitzen, wenn man sie als 32-Bit-Dateien abspeichert.
Ich habe mal die neuere Version gezogen, da ich noch die 1.5.1 hatte und mir die FAQ angesehen. Meine Frage ist nun. In welches Control laden die in dem Beispiel die PnG-Datei? In ein TImage oder in ein TImage32? Ich habe nämlich gestern abend hier im Forum gelesen, dass TImage32 gar nicht dafür gemacht sein soll mit transparenz durchsichtig über anderen Control liegen zu können. Hat sich das geändert oder habe ich es mal wieder falsch verstanden? |
Re: Transparenz ist nicht gut genug
Zitat:
Zitat:
Hinter dem Link verbirgt sich folgender Text: Is there a PNG library for GR32 which supports loading the image and its alpha channel at the same time? ... |
Re: Transparenz ist nicht gut genug
Ja natürlich weiss ich, dass das ein Link war. Ich bin im gefolgtm und habe mir das dort durchgelesen. Du fragst dies sicher, wegen meiner Frage mit TImage und TImage32!? Dies bezieht sich im Primzip darauf, was ich schrieb in Bezug auf die Transparenzfähigkeit der TImage32.
Ich habe selbst den Code probiert, aber der Compiler meckert, weil er natürlich das
Delphi-Quellcode:
nicht hat oder kennt.
uses PNGImage;
|
Re: Transparenz ist nicht gut genug
Zitat:
![]() Das ist ein Filter, der auch das normale TImage von Delphi dazu bringt PNG anzuzeigen. Da das auch in der FAQ erwähnt ist, gehe ich davon aus, das der Quellcode (Beispiel) pngdelphi verwendet. Hier kannst Du auch nochmal nach PNG alternativen schauen: ![]() |
Re: Transparenz ist nicht gut genug
Also das hier wollte ich unbedingt lesen:
Zitat:
|
Re: Transparenz ist nicht gut genug
Zitat:
TPNGImage ist keine Komponente, sondern "nur" ein Filter. Wenn Du das Package installiert, wird in initialization folgendes ausgeführt:
Delphi-Quellcode:
Lege einfach ein TImage auf ein leeres Form und klicke mal im Objektinspektor auf die Eigenschaft Picture. Im Dialog kannst du nun auch *.png Dateien auswählen und öffnen.
...
TPicture.RegisterFileFormat('PNG', 'Portable Network Graphics', TPNGObject); ... :D so einfach ist das. Alle Komponenten, die TPicture verwenden sind nun PNG fähig. In Deiner Unit wird in der uses dan automatisch pngimage hinzugefügt. Schau Dir auch die Beispiel Programme auf der Homepage am. [edit]nun sollte auch das Beispiel in der FAQ von der anderen Image Komponente funktionieren[/edit] |
Re: Transparenz ist nicht gut genug
Also ich weiss nun nicht, ob das der richtige Weg ist, aber ich habe es testhalber mal so gemacht:
Delphi-Quellcode:
Bitt um Protest, wenn das was schwerwiegendes Falsch ist. Die TImage habe ich auf transparent gestellt und hoffe nun, dass es in den folgenden Test zu besserer Qualität kommt.
procedure TForm1.Button1Click(Sender: TObject);
var Bitmap: TBitmap; PNG: TPNGObject; begin PNG := TPNGObject.Create; Bitmap := TBitmap.Create; {In case something goes wrong, free booth PNG and Bitmap} try PNG.LoadFromFile('c:\test.png'); Bitmap.Assign(PNG); //Convert data into bitmap Image1.Picture.Bitmap:=Bitmap; //Bitmap.SaveToFile(Dest); finally PNG.Free; Bitmap.Free; end end; |
Re: Transparenz ist nicht gut genug
Du warst schneller. Ich kann mir also den Umweg über das Assign sparen. Vielen Dank für Deine Infos und Deine Geduld!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:07 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz