3 Stimmen

Gibt es eine FMX-Funktion, um die Transparenzfarbe eines TImage zur Laufzeit festzulegen?

Ich habe ein TImage auf einem Formular in FMX (FireMonkey). Ich möchte zur Laufzeit ein Bitmap in das TImage laden, wobei das Bitmap einen transparenten Hintergrund haben soll, der durch die Farbe des ersten Pixels im Bitmap definiert ist. Diese Farbe kann von Bitmap zu Bitmap unterschiedlich sein.

Ich weiß, wie man dies zur Designzeit macht, indem man den MultiResBitmap-Editor für ein TImage verwendet. Allerdings finde ich keine Beispiele dafür, wie man dies zur Laufzeit macht. Muss ich dies manuell machen (die Farbe des ersten Pixels im Bitmap abrufen, dann alle Pixel durchgehen und alle übereinstimmenden transparent setzen) oder gibt es einen einfacheren Weg, dies zu tun?

3voto

Anthony Burg Punkte 580

Diese Funktion setzt eine bestimmte Farbe in einem Bitmap-Bild auf transparent, d.h. auf claNull, unter Verwendung der Farbe des ersten Pixels.

void SetTransparent (Graphics::TBitmap *oBmp)
{
  TBitmapData bmpData;
  oBmp->Map (TMapAccess::maReadWrite, bmpData);

  TAlphaColor colorToMakeTransparent = bmpData.GetPixel (0, 0);
  TAlphaColor transparentColor = claNull;

  for (int x=0; xUnmap (bmpData);
}
//---------------------------------------------------------------------------

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X