Code: Alles auswählen
bild:= TImage.Create(Self);
bild.Parent, Left, Top, Height, Width etc setzen
png:= TPortableNetworkGraphic.Create;
png.LoadFromFile('xyz.png');
png.Canvas.Brush.Style:= bsClear;
png.Canvas.Font.Size:= 14;
png.Canvas.Font.Color:= clBlack;
png.Canvas.Font.Style:= [fsBold];
png.Canvas.TextOut(12, 8, 'Test');
bild.Picture.Assign(png);
Das Problem ist, dass der Befehl png.Canvas.Font.Color:= clBlack scheinbar ignoriert wird. Stattdessen entspricht die Schriftfarbe der Hintergrundfarbe der Form, auf der das Image platziert ist, es wird also quasi transparent geschrieben. Ersetze ich den letzten Befehl durch bild.Canvas.Draw(0, 0, png) ist die Schrift zwar schwarz, dafür aber auch alle (anderen) transparenten Bereiche von bild.
Meine Fragen lauten:
1. Woran liegt das bzw. wie lässt sich das ändern?
2. Mir erscheint mein Ansatz irgendwie doppelt gemoppelt, weil ich zur Anzeige des Bildes ein Image (bild) und das Objekt png benötige. Geht das nicht irgendwie einfacher?
Bin für jede Hilfe dankbar!