AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Transparent zeichnen

Ein Thema von Popov · begonnen am 24. Sep 2012 · letzter Beitrag vom 25. Sep 2012
Antwort Antwort
Seite 1 von 2  1 2      
Popov
(Gast)

n/a Beiträge
 
#1

Transparent zeichnen

  Alt 24. Sep 2012, 08:50
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;
  Mit Zitat antworten Zitat
Benutzerbild von roga
roga

Registriert seit: 15. Jun 2008
Ort: Sachsen-Anhalt
109 Beiträge
 
Delphi XE8 Professional
 
#2

AW: Transparent zeichnen

  Alt 24. Sep 2012, 09:10
TransparentBlt
Ronald
  Mit Zitat antworten Zitat
Benutzerbild von Jonas Shinaniganz
Jonas Shinaniganz

Registriert seit: 30. Aug 2011
249 Beiträge
 
Delphi XE5 Ultimate
 
#3

AW: Transparent zeichnen

  Alt 24. Sep 2012, 09:19
Wäre möglich, dass dein Bitmap.Canvas.Pixels[0, 0] dieses Mal nicht deine transparente Farbe ist.

Grüße
Die Leiter der Entwicklungsabteilung dreht total am Mausrad!

Geändert von Jonas Shinaniganz (24. Sep 2012 um 09:21 Uhr) Grund: Dass mit 2 SS
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#4

AW: Transparent zeichnen

  Alt 24. Sep 2012, 09:24
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.
  Mit Zitat antworten Zitat
Benutzerbild von roga
roga

Registriert seit: 15. Jun 2008
Ort: Sachsen-Anhalt
109 Beiträge
 
Delphi XE8 Professional
 
#5

AW: Transparent zeichnen

  Alt 24. Sep 2012, 09:59
Hast Du hier mal geschaut: Bitmap und Transparent
Ronald
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#6

AW: Transparent zeichnen

  Alt 24. Sep 2012, 12:56
Könnte es sein, dass die Farbtiefe bzw. das Pixelformat von Quelle und Ziel unterschiedlich ist?
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#7

AW: Transparent zeichnen

  Alt 24. Sep 2012, 15:05
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;
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#8

AW: Transparent zeichnen

  Alt 24. Sep 2012, 16:04
"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
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#9

AW: Transparent zeichnen

  Alt 24. Sep 2012, 16:50
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.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#10

AW: Transparent zeichnen

  Alt 24. Sep 2012, 17:33
Welches Pixel willst du aufnehmen wenn Transparent := True?
Sollte das nicht vorher aufgenommen werden ? Bevor du Transparent = true setzt


Delphi-Quellcode:
Bitmap.TransparentColor := Bitmap.Canvas.Pixels[0, 0];
Bitmap.Transparent := True;
gruss

Geändert von EWeiss (24. Sep 2012 um 17:36 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:21 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz