![]() |
Text auf Canvas von transparentem PNG schreiben -Wie?
Hallo Wissende,
mit folgendem Code erstelle ich eine transparente png-Datei. Leider kann ich den Text nicht in der Ausgabe sehen. Was mache ich falsch?
Delphi-Quellcode:
Ich nutze das PngImage in version 1.564
procedure TForm1.Button3Click(Sender: TObject);
var pngText : TPNGObject; begin pngText := TPNGObject.CreateBlank(COLOR_RGBALPHA, 16, 1920, 1080); pngText.Canvas.Font.Size := 55; pngText.Canvas.Brush.Style:=bsClear; pngText.Canvas.Font.Color := clRed; pngText.Canvas.Font.Name := 'Arial'; pngText.Canvas.Font.Style:=[fsBold]; pngText.Canvas.TextOut(0, 0, 'Hello World'); pngText.SaveToFile('c:\temp\text_test.png'); end; |
AW: Text auf Canvas von transparentem PNG schreiben -Wie?
COLOR_RGBALPHA, 16,
Eventuell funktioniert diese Kombination nicht (16Bit für jeden einzelnen Farb- und den Alphakanal?). Versuch mal so: COLOR_RGBALPHA, 8, |
AW: Text auf Canvas von transparentem PNG schreiben -Wie?
Vielen Dank für Deine Antwort,
leider brachte dieser Versuch nicht den gewünschten Effekt. Der Text ist nicht zu sehen in der png-Datei. Gibts sonst noch Möglichkeiten? |
AW: Text auf Canvas von transparentem PNG schreiben -Wie?
Die ganzen TCanvas-Methoden bauen auf der GDI auf, und diese unterstützt keinen Alphakanal. Deshalb funktioniert das so nicht.
Du könntest stattdessen ![]() |
AW: Text auf Canvas von transparentem PNG schreiben -Wie?
Etwas genauer: Canvas.TextOut() schreibt bei 32-Bit Zielen die höchstwertigen 2 Bytes mit 0, da sie nicht verwendet werden. Bei einem 32-Bit PNG sind diese Bytes aber genau der Alphakanal, der bei 0 als voll durchsichtig gilt. Der Text dürfte also tatsächlich in dem Bild sein, nur halt voll transparent. Du könntest entweder in einem zweiten Durchlauf den Alphakanal manuell anpassen, oder besser wie vorgeschlagen eine Lib einsetzen, die "Alpha-Aware" ist. Letzteres erspart einem auch gerade bei Text einen Haufen Geraffel mit ClearType u.ä.
|
AW: Text auf Canvas von transparentem PNG schreiben -Wie?
Zitat:
|
AW: Text auf Canvas von transparentem PNG schreiben -Wie?
Mist. Ich war gedanklich zwischen Bit- und Byteangaben hin und her gerissen, und hab's dann auch noch gemischt. Ich muss mal was essen :stupid:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:09 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