![]() |
Transparent zeichnen
Ich sehe wieder vor lauter Bäume den Wald nicht mehr. Ich will eine Bitmap transparent zeichnen, etwas was ich seit über 15 Jahren mit Delphi mache und plötzlich weiß ich nicht wieso es nicht klappt.
Delphi-Quellcode:
with Image1.Picture do
begin Bitmap.Width := 200; Bitmap.Height := 200; Bitmap.Canvas.FillRect(Bitmap.Canvas.ClipRect); Bitmap.Canvas.Ellipse(Bitmap.Canvas.ClipRect); Bitmap.Transparent := True; Bitmap.TransparentColor := Bitmap.Canvas.Pixels[0, 0]; Self.Canvas.Draw(0, 0, Bitmap); end; |
AW: Transparent zeichnen
TransparentBlt
|
AW: Transparent zeichnen
Wäre möglich, dass dein Bitmap.Canvas.Pixels[0, 0] dieses Mal nicht deine transparente Farbe ist.
Grüße |
AW: Transparent zeichnen
Nun, selbst wenn es diese Funktion gibt (trotzdem danke), hier geht es um die pure TBitmap. Ich habe es in zig Programmen schon genutzt (auch ohne TransparentBlt). Es war so selbstverständlich für mich, dass ich noch nicht mal bewußt darüber nachgedacht habe wie es geht.
@Jonas Shinaniganz Doch, ist schon. |
AW: Transparent zeichnen
Hast Du hier mal geschaut:
![]() |
AW: Transparent zeichnen
Könnte es sein, dass die Farbtiefe bzw. das Pixelformat von Quelle und Ziel unterschiedlich ist?
|
AW: Transparent zeichnen
Das habe ich mir zuerst auch gedacht und getestet, ist es aber nicht. Außerdem habe ich beide Bitmaps in der Farbtiefe angeglichen.
Sonderbarer weise funktioniert das:
Delphi-Quellcode:
var
Bitmap: TBitmap; begin Bitmap := TBitmap.Create; try Bitmap.Width := 200; Bitmap.Height := 200; Bitmap.Canvas.Ellipse(Bitmap.Canvas.ClipRect); Bitmap.Transparent := True; Bitmap.TransparentColor := Bitmap.Canvas.Pixels[0, 0]; Self.Canvas.Draw(0, 0, Bitmap); finally Bitmap.Free; end; end; |
AW: Transparent zeichnen
"Dr***s" With
Delphi-Quellcode:
with Image1.Picture do
begin Bitmap.Width := 200; Bitmap.Height := 200; Bitmap.Canvas.FillRect(Bitmap.Canvas.ClipRect); Bitmap.Canvas.Ellipse(Bitmap.Canvas.ClipRect); Bitmap.Transparent := True; // welches Bitmap könnte da jetzt erwischt worden sein |
AW: Transparent zeichnen
Ich weiß von deiner Abneigung gegen With, aber das zweite Beispiel hat nichts mit dem ersten zu tun. Das sind zwei unabhängige Beispiele. In der Praxis benutze ich auch nie die Variablenbezeichnung Bitmap. Die Bezeichnung hat sich hier nur zufällig so ergeben.
Wenn du jedoch etwas anderes meinst, dann habe ich es nicht erkannt. |
AW: Transparent zeichnen
Welches Pixel willst du aufnehmen wenn Transparent := True?
Sollte das nicht vorher aufgenommen werden ? Bevor du Transparent = true setzt
Delphi-Quellcode:
gruss
Bitmap.TransparentColor := Bitmap.Canvas.Pixels[0, 0];
Bitmap.Transparent := True; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:28 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 by Thomas Breitkreuz