AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Konvertieren TBitmap mit Alphakanal nach TIcon

Ein Thema von Hirschmüller · begonnen am 27. Aug 2014 · letzter Beitrag vom 27. Aug 2014
Antwort Antwort
Hirschmüller

Registriert seit: 27. Jun 2006
Ort: Wien
4 Beiträge
 
#1

Konvertieren TBitmap mit Alphakanal nach TIcon

  Alt 27. Aug 2014, 18:18
Hallo miteinander,

Wahrscheinlich stehe ich gerade auf dem Schlauch: Ich suche eine Möglichkeit, ein TBitmap (PixelFormat pf32bit) in ein TIcon zu konvertieren, aber so, dass die Teiltransparenz erhalten bleibt. Den Trick mittels TImageList kenne ich, nachteilig ist, dass die Teiltransparenz dabei flöten geht.

Siehe http://www.swissdelphicenter.ch/de/showcode.php?id=426.

In der TImageList gibt es die Methode "Add(Image, Mask: TBitmap)", deren zweiter Parameter mir schleierhaft ist. Die MSDN-Doku zu dieser API-Funktion begreife ich ganz einfach nicht.

Mir fällt jetzt nichts mehr ein, ein möglicher Umweg über TPNGImage erscheint mir doch etwas abenteuerlich - es sollte doch einfacher möglich sein?

Unter Teiltransparenz verstehe ich, dass die Werte des Alphakanal beliebige ganzzahlige Werte zwischen 0 und 255 annehmen können!
Ich verwende Delphi XE2 unter Windows 7 Home Premium 32bit.

Ich hoffe, dass mir jemand ein wenig auf die Sprünge helfen kann.


Gruß aus Wien
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.376 Beiträge
 
Delphi 2007 Professional
 
#2

AW: Konvertieren TBitmap mit Alphakanal nach TIcon

  Alt 27. Aug 2014, 18:46
Typisches with Problem***
Delphi-Quellcode:
procedure bmp2ico(Image: TImage; FileName: TFilename);
var
  Bmp: TBitmap;
  Icon: TIcon;
  ImageList: TImageList;
begin
  Bmp := TBitmap.Create;
  Icon := TIcon.Create;
  try
    Bmp.Assign(Image.Picture);
    ImageList := TImageList.CreateSize(Bmp.Width, Bmp.Height);
    try
      ImageList.AddMasked(Bmp, Bmp.TransparentColor); // ****
      ImageList.GetIcon(0, Icon);
      Icon.SaveToFile(FileName);
    finally
      ImageList.Free;
    end;
  finally
    Bmp.Free;
    Icon.Free;
  end;
end;
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
26.923 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: Konvertieren TBitmap mit Alphakanal nach TIcon

  Alt 27. Aug 2014, 18:59
So ist es besser :
Delphi-Quellcode:
  Icon := nil;
  Bmp := TBitmap.Create;
  try
    Icon := TIcon.Create;
    ...
  finally
    Bmp.Free;
    Icon.Free;
  end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Hirschmüller

Registriert seit: 27. Jun 2006
Ort: Wien
4 Beiträge
 
#4

AW: Konvertieren TBitmap mit Alphakanal nach TIcon

  Alt 27. Aug 2014, 19:59
Hallo DeddyH,

Danke für die Antwort. Dies ist leider genau die Lösung, die ich schon in der Fragestellung (Link!) ausgeschlossen hatte. Bei Deiner Lösung wird nur eine einzige Farbe als Transparenz verwendet, ich will aber Teiltransparenzen haben, deshalb gibt es ja den Alphakanal und TIcon kann damit umgehen.

Gibt es nicht doch eine Lösung?

Gruß aus Wien
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
26.923 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: Konvertieren TBitmap mit Alphakanal nach TIcon

  Alt 27. Aug 2014, 20:06
Ich habe doch gar keine Lösung gepostet
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  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 23:00 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