![]() |
PNG: Transparente Bereiche werden schwarz gezeichnet
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo!
Lade ich ein PNG mit transparententen Bereichen (z.B. ![]() dann werden die Bereiche die eigentlich transparent sein sollten einfach schwarz gezeichnet. Ein BitBtn sollte in dem Fall ja wohl mit seinem "normalen" Background mischen. Gibt's dafür einen fix? Danke, Ralf |
AW: PNG: Transparente Bereiche werden schwarz gezeichnet
Hast du den normalen BitBtn aus Delphi benutzt ? Wenn ja, dann ist das so. :zwinker:
Lösung: benutze die PngComponents, die es bei Embarcadero für Versionen ab 2009 zum Download gibt. lang hat die Suche gedauert... 8-) ![]() |
AW: PNG: Transparente Bereiche werden schwarz gezeichnet
Zitat:
![]() |
AW: PNG: Transparente Bereiche werden schwarz gezeichnet
Ich war erst im EDN bei Downloads registrierte User. Dann hab ich die Blogs durchsuchen lassen. Auf Google bin ich nicht gekommen... warum auch. :stupid:
|
AW: PNG: Transparente Bereiche werden schwarz gezeichnet
Zitat:
Ich vermute der PNG-Handler der auf meiner Maschine schon registriert ist macht Troubles. Kann man irgendwie feststellen wo der Handler her ist? (also aus welcher Komponentensammlung). Im Moment installiere ich auf der VM Stück für Stück die ganzen Komponentensammlungen aber das scheint mir nicht der schlaueste/effektivste Weg zu sein... Danke! |
AW: PNG: Transparente Bereiche werden schwarz gezeichnet
Verstehe eure probleme nicht.
Es ist doch einfach ein PNG ins TBitmap format zu konvertieren ohne das die transparenten Eigenschaften verloren gehen.
Delphi-Quellcode:
function LoadSourceImage(ImgFile: WideString): HBITMAP;
var img: cardinal; hbmReturn: HBITMAP; format : integer; begin Result := 0; if not GDIReady then exit; if not FileExists(ImgFile) then exit; GdipLoadImageFromFile(PWideChar(ImgFile), img); if img <> 0 then begin GdipGetImagePixelFormat(img, format); if format = PixelFormat32bppARGB then begin GdipCreateHBITMAPFromBitmap(pointer(img), hbmReturn, $000000); if hbmReturn <> 0 then Result := hbmReturn; end; GdipDisposeImage(img); end; end;
Delphi-Quellcode:
ABER!
function CreateImageFromFile(FileName: WideString): TBitmap;
var Img: TBitmap; hbmReturn: HBitmap; begin Img := nil; hbmReturn := LoadSourceImage(FileName); if hbmReturn <> 0 then begin Img := TBitmap.Create; // >> hier ist das TBitmap ohne verlust der transparenz Img.Handle := hbmReturn; end; Result := Img; end; Achtet darauf das euer Png.. im Format PixelFormat32bppARGB vorliegt Und das TBitmap kann man nun ganz einfach für den BitBtn verwenden. PS: Stelle hier so viele projekte mit lösungen für PNG/TBitamp/konvertierungen zur verfügung. In denen man stöbern kann .. wenn ihr davon nichts laden wollt seid ihr selbst schuld. gruss |
AW: PNG: Transparente Bereiche werden schwarz gezeichnet
Der Konflikt bestand mit den AlphaControls - und die unterstützen die Transparenz ganz prächtig.
Lösung also gefunden :) TsButton macht alles super! (und das passt auch ganz gut nachdem diese Anwendung irgendwann geskinnt werden soll) Danke an alle! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:23 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