Image.Transparent:= True??????
Wenn ich mich recht entsinne möchte er nur etwas transparent Zeichnen und nicht das Ziel transparent darstellen.
BitBlt ist außerdem ein direkter Windows API Aufruf. Zum Verständniss. Ein TBitmap überprüft beim Zeichnen die Eigenschaft Transparent und ruft dann entsprechend den Befehl
TransparentStretchBlt oder
StretchBlt auf. Normalerweise interessiert sich ein Windows API Aufruf nicht für irgendwelche Eigenschaften einer Delphi Klasse. Mag sein, dass es durch Randeffekt manchmal doch zu Effekten kommt die im Resultat dann auch so aussehen würden.
Nach meiner Meinung hast du 2 Möglichkeiten.
Entweder du benutzt die Schnittstellen der VCL. Also
Canvas.Draw(X, Y, BMP). Was aber mitunter nicht immer das Schnellste ist. Dafür aber alles recht anständig gekappselt und wenn es nicht gerade auf jedes noch kleine bisschen Performance ankommt durchaus akzeptabel.
Oder aber du benutzt den Befehl
TRANSPARENTBLT. Der sieht so ähnlich aus wie
BitBlt nur, dass du noch eine SrcWidth, SrcHeight und eine Farbe angeben musst.
Nur die Menschheit ist arrogant genug, um zu glauben sie sei die einzige intelligente Lebensform im All. Wo nicht mal das nachhaltig bewiesen wurde.