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:
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;
ABER!
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