Hallo,
ich habe folgendes Problem, bei dem ich nicht weiter komme.
Ich habe Delphi 10.2.3 Enterprise. Die Anwendung ist eine FMX Anwendung.
Ich habe ein Bild als JPG, BMP (oder auch PNG) Datei in der es Bereiche gibt die Transparent sein sollen. Zur Laufzeit sollen diese transparenten Bereiche (Kreise und Rechtecke) dann mit Farben gefüllt werden. Alle transparente Bereiche sollen dabei die gleiche Farbe erhalten, so das im Prinzip der Hintergrund auf den das Bild gezeichnet wird einfarbig sein kann und nur die bestimmten Bereiche durchsichtig sein müssen, damit der Hintergrund durchscheint.
Ich habe jetzt schon ewig gesucht, aber nichts wirklich passendes gefunden. Hat jemand eine Idee wie man so etwas umsetzt? Oder einen Link wo so etwas schon mal gemacht oder beantwortet wurde?
Viele Grüße
Wie die anderen schon erwähnt haben, kann eine JPeg-Datei keine transparenten Bereiche haben (eine 32-Bit-Bitmap unter Windows schon, diese wirst Du aber nicht in FMX einlesen können).
Als Quelle müsstest Du also schon .PNG-Dateien verwenden, die Du dann wie beschrieben modifizieren kannst.
Du müsstest also die einzelnen Pixel prüfen und bei den transparenten Pixeln den alpha-Wert auf Null setzen und die anderen
RGB-Werte mit der gewünschten Farbe setzen.
Unter FMX greifst Du da per "TBitmap.map" und "TBitmapData.GetPixel" bzw. "TBitmapData.SetPixel" lesend und schreibend auf die einzelnen Pixel zu.
Bei Bedarf: In meinem letzten FMX-Buch ist im Kapitel 6 ("Grafikbearbeitung mit FireMonkey") unter Punkt 3. ein Beispiel mit Source-Code beschrieben, wie man den Alpha-Wert eines TBitmaps verändern kann (unter Punkt 2., wie man Farben setzt).