AGB  ·  Datenschutz  ·  Impressum  







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

Transparenz-Farbe von TImage ändern

Offene Frage von "Kevinpptx"
Ein Thema von Kevinpptx · begonnen am 27. Apr 2024 · letzter Beitrag vom 28. Apr 2024
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    
Kevinpptx

Registriert seit: 10. Okt 2022
Ort: Sachsen
27 Beiträge
 
Delphi 11 Alexandria
 
#1

Transparenz-Farbe von TImage ändern

  Alt 27. Apr 2024, 12:12
Hallo, ich versuche in Delphi dieses (ich konnte es hier nicht hochladen, weil es zu groß war) Bitmap-Bild als Bild eines TImage einzufügen. Damit die Farbe rot transparent wird, war mein Ansatz so:

Delphi-Quellcode:
procedure TForm1.Image1Click(Sender: TObject);
var b : TBitmap;
begin
  b := TBitmap.Create();
  b.LoadFromFile('Koenig_weiss.bmp');
  b.Transparent := true;
  b.TransparentColor := clRed;
  Image1.Picture.Graphic := b;
end;
Allerdings wird dann nur noch rot angezeigt, was suggeriert, dass die transparente Farbe noch immer weiß ist:

timagerot.png


Kann mir irgendjemand sagen, was ich falsch mache?

Danke im Voraus :)
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.490 Beiträge
 
Delphi 7 Professional
 
#2

AW: Transparenz-Farbe von TImage ändern

  Alt 27. Apr 2024, 13:35
Transparentcolor rot wird bei dem Bild nicht funktionieren, weil in dem Bild nichts rot (= clRed) ist, die überwiegend vorkommende Farbe ist $005334FE.
  Mit Zitat antworten Zitat
Kevinpptx

Registriert seit: 10. Okt 2022
Ort: Sachsen
27 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Transparenz-Farbe von TImage ändern

  Alt 27. Apr 2024, 13:52
Transparentcolor rot wird bei dem Bild nicht funktionieren, weil in dem Bild nichts rot (= clRed) ist, die überwiegend vorkommende Farbe ist $005334FE.
Ich habe den Code-Teil abgeändert.

b.TransparentColor := $005334FE; Leider bleibt das Ergebnis unverändert.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.452 Beiträge
 
Delphi 12 Athens
 
#4

AW: Transparenz-Farbe von TImage ändern

  Alt 27. Apr 2024, 14:19
Das Bitmap ist erstmal zu groß für das TImage, was man entweder durch setzen von Stretch := True oder AutoSize := True lösen kann;

Weiterhin sollte das TImage ebenfalls ein Transparent := True bekommen. Die TBitmap.TransparentXXX Eigenschaften wirken sich nur auf das Zeichnen aus, nicht auf den Inhalt der Bitmap.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Kevinpptx

Registriert seit: 10. Okt 2022
Ort: Sachsen
27 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Transparenz-Farbe von TImage ändern

  Alt 27. Apr 2024, 14:27
Das Bitmap ist erstmal zu groß für das TImage, was man entweder durch setzen von Stretch := True oder AutoSize := True lösen kann;

Weiterhin sollte das TImage ebenfalls ein Transparent := True bekommen. Die TBitmap.TransparentXXX Eigenschaften wirken sich nur auf das Zeichnen aus, nicht auf den Inhalt der Bitmap.
Vielen Dank! Jetzt funktioniert es
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.062 Beiträge
 
Delphi 12 Athens
 
#6

AW: Transparenz-Farbe von TImage ändern

  Alt 27. Apr 2024, 15:15
Wobei dort das Tansparent vom Bitmap nicht über eine Farbe, sondern durch ein Pixel (die Farbe des einen Eck-Pixels) bestimmt wird.
Delphi-Referenz durchsuchenTImage.Transparent

Muß es denn auch unbedingt ein Bitmap sein?
z.B. PNG oder etwas aus der Familie Vector-Grafiken

oder
https://en.wikipedia.org/wiki/Chess_symbols_in_Unicode
https://www.unicode.org/charts/PDF/U1FA00.pdf
https://www.delphipraxis.net/214866-...und-fonts.html
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (27. Apr 2024 um 15:22 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.452 Beiträge
 
Delphi 12 Athens
 
#7

AW: Transparenz-Farbe von TImage ändern

  Alt 27. Apr 2024, 15:37
Wobei dort das Tansparent vom Bitmap nicht über eine Farbe, sondern durch ein Pixel (die Farbe des einen Eck-Pixels) bestimmt wird.
Das gilt nur wenn TBitmap.TransparentMode auf tmAuto steht. Andernfalls werden die Einstellungen in TBitmap schon mit in das Image übernommen. Das kann man leicht sehen, wenn an die TransparentColor des Bitmaps falsch einstellt.

Lediglich das Transparent von TImage überschreibt das Transparent der TBitmap bei der Zuweisung auf Picture.Graphic. Deswegen muss das beim Control passend gesetzt sein.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Kevinpptx

Registriert seit: 10. Okt 2022
Ort: Sachsen
27 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Transparenz-Farbe von TImage ändern

  Alt 27. Apr 2024, 17:42
Das Bitmap ist erstmal zu groß für das TImage, was man entweder durch setzen von Stretch := True oder AutoSize := True lösen kann;

Weiterhin sollte das TImage ebenfalls ein Transparent := True bekommen. Die TBitmap.TransparentXXX Eigenschaften wirken sich nur auf das Zeichnen aus, nicht auf den Inhalt der Bitmap.
Jetzt bin ich endgültig verwirrt. Ich habe Delphi neu gestartet und jetzt funktioniert es nicht mehr. Ausgabe:
ausgabe.png (zumindest sieht man den König diesmal)

Es hatte doch grad noch funktioniert :/

Ich hab den Code zum Testen etwas abgeändert. Siehe:
Delphi-Quellcode:
procedure TForm1.Image1Click(Sender: TObject);
var b : TBitmap;
    pxc: TColor;
    hxc : string;
begin
  b := TBitmap.Create();
  b.LoadFromFile('Koenig_weiss.bmp');
  b.TransparentColor := $FE5334;
  b.Transparent := true;
  Image1.Picture.Graphic := b;

  // folgendes wird nicht ausgeführt, was keinen Sinn ergibt, da....
  if (Image1.Picture.Bitmap.Canvas.Pixels[0, 0] = $FE5334) then ShowMessage('toll');


  pxc := Image1.Picture.Bitmap.Canvas.Pixels[0, 0];
  hxc := IntToHex(ColorToRGB(pxc), 6);
  ShowMessage(hxc);
  // ...das hier #5334FE (hex) zurückgibt, was ja $FE5334 (delphi) ist
end;
Hättet ihr vielleicht noch eine Idee?
(Und ja, ich muss eine Bitmap verwenden)
(Beim Image ist stretched true und Transparent true)

Geändert von Kevinpptx (27. Apr 2024 um 17:51 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.452 Beiträge
 
Delphi 12 Athens
 
#9

AW: Transparenz-Farbe von TImage ändern

  Alt 27. Apr 2024, 18:02
Was bringt dich denn auf diese Idee?
Zitat:
// ...das hier #5334FE (hex) zurückgibt, was ja $FE5334 (delphi) ist
Hier mal die Implementierung:
Delphi-Quellcode:
function ColorToRGB(Color: TColor): Longint;
begin
  if Color < 0 then
    Result := GetSysColor(Color and $000000FF) else
    Result := Color;
end;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Kevinpptx

Registriert seit: 10. Okt 2022
Ort: Sachsen
27 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Transparenz-Farbe von TImage ändern

  Alt 27. Apr 2024, 19:07
Was bringt dich denn auf diese Idee?
Zitat:
// ...das hier #5334FE (hex) zurückgibt, was ja $FE5334 (delphi) ist
Hier mal die Implementierung:
Delphi-Quellcode:
function ColorToRGB(Color: TColor): Longint;
begin
  if Color < 0 then
    Result := GetSysColor(Color and $000000FF) else
    Result := Color;
end;
Ich war unter der Auffassung. Auf jeden Fall funktioniert es ja nicht. Nicht mit $FE5334 und nicht mit $5334FE, was auch immer richtig ist. Obwohl es ja zu 100% diese Farbe ist. Vorher hat es ja auch funktioniert, ich habe nichts geändert. Jetzt nicht mehr.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    

 

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 19:11 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