Hallo Moony!
Du verwendest bzw. nutzt die Transparent Eigenschaft von TBitmap aus und da liegt das Problem.
Transparent,
TransparentMode und
TransparentColor werden von der
VCL angeboten und diese implementiert alle Routinen so, dass sie diese Eigenschaft interpretiert und entsprechend umsetzt. Auf der
WinAPI Ebene gibt es diese Eigenschaft nicht, dort musst du eigentlich per Hand mit Masken arbeiten und alle nicht transparenten Teile auf dein Ziel malen lassen.
Problem:
BitBlt() und andere
WinAPI kennen keine TransparentColor und malen somit diese mit. Deine Rosa-Farbe ist deine TransparentColor und wird somit mit ausgegeben.
Lösung: Erzeuge dir einen
DC mit dem Ergebnisbild, also mit schon umgesetzter Transparenz. Dies erreichst du z.B. in dem du ein TBitmap anlegst und darauf mit Draw() einmal das Bild mit der Transparenzangabe raufzeichnen lässt. Da die Standardfarbe von einem TBitmap (bzw.
DC) weiß ist, werden deine Ecken weiß sein, was der Papierfarbe entsprechend sollte. Somit würde das Ausdrucken ein rundes Bild mit weißen Ecken erzeugen.
Zur Kontrolle lege dir ein TImage auf dein Formular und weise mit Assign() dein endgültiges Bild vor dem Ausdrucken zu. Das TImage sollte das richtige Bild anzeigen - Voraussetzung ist dabei aber auch, dass die Transparent Eigenschaft von dem zugewiesenen TBitmap und vom anzeigenden TImage
false sind.
Gruss,
Yellow