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 3 von 4     123 4      
Kevinpptx

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

AW: Transparenz-Farbe von TImage ändern

  Alt 28. Apr 2024, 13:07
Das oben verlinke Bild hat aber auch keinen durchgehenden Rand in $005334FE, sondern 'nen kleinen schwarzen Block und 'nen recht großen weißen Balken. Wenn mich nicht alles täuscht, dürfte Pixels[0, 0] = $FFFFFF sein.

Dashier b.TransparentColor := $FE5334; verstehe ich nicht. Wenn ich bei meinem Delphi bei irgendeiner Komponenten als Farbe $FE5334 vergebe, wird's blau, bei $5334FE erhalte ich jedoch ein rotes Bild, so wie in der verlinkten Datei.

Frag' doch mal den Debugger, welchen Wert Image1.Picture.Bitmap.Canvas.Pixels[0, 0] hat, dann kannst Du sehen, welcher Wert hier vergeben wurde und warum eine Abfraqge auf $FE5334 bzw. $5334FE scheitert.

Wenn's mit dem Debugger nicht geht dann halt einfach mal ein ShowMessage(IntToHex(Image1.Picture.Bitmap.Canvas.Pixels[0, 0]));
Tut mir Leid für die Verwirrung. Inzwischen hatte ich bereits das Bild ohne die schwarzen und weißen Pixel verwendet, aber vergessen, dass oben noch das Original verlinkt war. Ich habe das richtige Bild jetzt oben verlinkt.
  Mit Zitat antworten Zitat
Kevinpptx

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

AW: Transparenz-Farbe von TImage ändern

  Alt 28. Apr 2024, 13:10
himitsu hat in #6 Links auf Schachfiguren in Unicode Zeichensätzen gepostet (es gibt viele, auch um einen WInkel w gedrehte).

Hier unten ein Beispiel, wie du alle 10 Schachfiguren eines Unicodezeichensatzes je als PNG abspeichern kannst.

Alternativ zum Speichern in PNGs könntest du die Bitmaps in eine Imagelist schreiben und hättest dann via diese Liste einfachen Zugriff auf die Bilder (Addmasked).

Delphi-Quellcode:
uses PNGImage;

procedure TForm108.Button1Click(Sender: TObject);
var figur, b : TBitMap;
    pngfigur : TPNGImage;
    cs : unicodestring;
    hl, br, ho, i : integer;
    te : TSize;
begin
  for i := $2654 to $265f do cs := cs + widechar(i);
  b := TBitMap.Create;
  figur := TBitMap.Create;
  pngfigur := TPNGImage.Create;
 try
  br := 200; // breite einer schachfigur grafik
  ho := 200; // hölhe

  b.SetSize( 10*br, ho ); // bitmap, in welche wir alle 10 figuren schreiben werden
  b.Canvas.Font.Name := 'Segoe UI Symbol1'; // eine unicode fähige schrift wählen
  // Arial Unicode MS1, Code20001, DejaVu Sans1, DejaVu Sans Mono1, Segoe UI Symbol1, Symbola1, Unifont1
  b.Canvas.Font.Height := b.Height; // schrifthöhe
  b.Canvas.Font.Color := clblack; // farbe der schrift

  hl := 0;
  // figuren zeichnen
  for i := 1 to 10 do
  begin
    te := b.Canvas.TextExtent(cs[i]);
    b.Canvas.TextOut(hl+(br-te.cx) div 2, (ho-te.cy) div 2, cs[i] );
    inc(hl,br);
  end;
  // umgebung der figuren rot einfärben bis zur randfarbe der figuren
  b.Canvas.Brush.Color := clred;
  b.Canvas.Brush.Style := bsSolid;
  b.Canvas.FloodFill(0,0,b.Canvas.Font.Color,fsBorder);

  // figurenbitmap
  figur.SetSize(br,ho);
  // transparenz festlegen
  figur.TransparentColor := clred;
  figur.TransparentMode := tmFixed;
  figur.Transparent := true;

  // die 10 figuren in png files abspeichern
  hl := 0;
  for i := 1 to 10 do
  begin
    figur.Canvas.CopyRect(Rect(0,0,figur.Width,figur.Height), b.Canvas, Rect(hl,0,hl+br,ho) );
    pngfigur.Assign( figur );
    pngfigur.SaveToFile( extractfilepath(paramstr(0)) + 'fig' + i.ToString + '.png' );
    inc(hl,br);
  end;
 finally
  b.Free;
  figur.Free;
  pngfigur.Free;
 end;
end;
Hallo Michael, danke schonmal für deine Mühe! Ich habe noch Hoffnung auf den Ansatz, der hier die ganze Zeit besprochen wird (vor allem, weil es bei Uwe Raabe zu funktionieren scheint), aber wenn ich das aufgebe, dann werde ich mir deine Lösung mal genauer anschauen.
  Mit Zitat antworten Zitat
Kevinpptx

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

AW: Transparenz-Farbe von TImage ändern

  Alt 28. Apr 2024, 13:15
Dreh mal die Sequenz um, d.h. lade erst die Bitmap und setze dann die Transparenzparameter
Hat leider nicht funktioniert.
  Mit Zitat antworten Zitat
Michael II

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
760 Beiträge
 
Delphi 11 Alexandria
 
#24

AW: Transparenz-Farbe von TImage ändern

  Alt 28. Apr 2024, 15:36

Mit diesem Code kommt zumindest auch "toll" bei mir, allerdings ist das Bild immer noch nicht transparent .
Ich habe den Code auch geladen in D11.2. Bei mir wird zuerst auch toll angezeigt, dann wird im Image ein dunkelgrauer König angezeigt (erwartet weiss). Die dünne Linie am unteren Bildrand wird (wie im Quellbild) aber weiss dargestellt. Alles um den König rum ist transparent.
Michael Gasser
  Mit Zitat antworten Zitat
Kevinpptx

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

AW: Transparenz-Farbe von TImage ändern

  Alt 28. Apr 2024, 15:45

Mit diesem Code kommt zumindest auch "toll" bei mir, allerdings ist das Bild immer noch nicht transparent .
Ich habe den Code auch geladen in D11.2. Bei mir wird zuerst auch toll angezeigt, dann wird im Image ein dunkelgrauer König angezeigt (erwartet weiss). Die dünne Linie am unteren Bildrand wird (wie im Quellbild) aber weiss dargestellt. Alles um den König rum ist transparent.
Wieso ist bei mir dann immer noch alles rot?
exko.jpg

Ich habe mal meinen Projektordner hier hochgeladen, falls es hilft (Relevant im Projekt ist das Image oben Rechts im Hauptformular und die Methode Image1Click in UMain):

Projektordner.zip (Verwendet Delphi 11.3)
  Mit Zitat antworten Zitat
Michael II

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
760 Beiträge
 
Delphi 11 Alexandria
 
#26

AW: Transparenz-Farbe von TImage ändern

  Alt 28. Apr 2024, 15:47
[
Hallo Michael, danke schonmal für deine Mühe! Ich habe noch Hoffnung auf den Ansatz, der hier die ganze Zeit besprochen wird (vor allem, weil es bei Uwe Raabe zu funktionieren scheint), aber wenn ich das aufgebe, dann werde ich mir deine Lösung mal genauer anschauen.
Dann hast du gleich alle 10 Schachfiguren aufs Mal - bei 200x200 Pixel benötigen diese 20.9 KB (21’448 Bytes) - und du musst sie nicht mal auf Platte speichern; kannst die Figuren zur Laufzeit in der von dir gewünschten Grösse erzeugen lassen.
Dein weisser König allein frisst 6.03 MB (6’327’450 Bytes) Speicher...

Und wie erwähnt: Wenn du deine Bitmap in einem Malprogramm transparent abspeicherst (ob als ARGB BMP oder PNG), dann hast du in Delphi kein Problem mehr mit dem Laden.
Michael Gasser
  Mit Zitat antworten Zitat
Kevinpptx

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

AW: Transparenz-Farbe von TImage ändern

  Alt 28. Apr 2024, 15:52
[
Hallo Michael, danke schonmal für deine Mühe! Ich habe noch Hoffnung auf den Ansatz, der hier die ganze Zeit besprochen wird (vor allem, weil es bei Uwe Raabe zu funktionieren scheint), aber wenn ich das aufgebe, dann werde ich mir deine Lösung mal genauer anschauen.
Dann hast du gleich alle 10 Schachfiguren aufs Mal - bei 200x200 Pixel benötigen diese 20.9 KB (21’448 Bytes) - und du musst sie nicht mal auf Platte speichern; kannst die Figuren zur Laufzeit in der von dir gewünschten Grösse erzeugen lassen.
Dein weisser König allein frisst 6.03 MB (6’327’450 Bytes) Speicher...

Und wie erwähnt: Wenn du deine Bitmap in einem Malprogramm transparent abspeicherst (ob als ARGB BMP oder PNG), dann hast du in Delphi kein Problem mehr mit dem Laden.
Ich werde es um 17:00 Uhr mal versuchen und mich dann melden.
  Mit Zitat antworten Zitat
Michael II

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
760 Beiträge
 
Delphi 11 Alexandria
 
#28

AW: Transparenz-Farbe von TImage ändern

  Alt 28. Apr 2024, 16:35
Wieso ist bei mir dann immer noch alles rot?
Ich habe mal meinen Projektordner hier hochgeladen,
Ich habe dein Projekt geladen.
Mit dem ursprünglich geposteten BMP: Meldungen "toll" sowie Farbcodes wie erwartet. König dunkelgrau (erwartet weiss), Umgebung transparent.
Mit deinem neuen BMP File: "toll", Farbcodes wie erwartet, König weiss, Umgebung rot (nicht transparent).
Michael Gasser

Geändert von Michael II (28. Apr 2024 um 17:14 Uhr)
  Mit Zitat antworten Zitat
Kevinpptx

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

AW: Transparenz-Farbe von TImage ändern

  Alt 28. Apr 2024, 16:43
Wieso ist bei mir dann immer noch alles rot?
Ich habe mal meinen Projektordner hier hochgeladen,
Ich habe dein Projekt geladen.
Mit dem ursprünglich geposteten BMP: Meldungen "toll" sowie Farbcodes wie erwartet. König dunkelgrau (erwartet weiss), Umgebung transparent.
Mit deinem neuen BMP File: "toll", Farbcodes wie erwartet, König weiss, Umgebung rot (nicht transparent).
Dann habe ich gedacht, ich lösche mal dein Image1 und füge ein neues ein. Ergebnis mit deinem neuen BMP File; "toll", Farbcodes wie erwartet. König hat das Weite gesucht: alles rot.
Das wird alles immer verwirrender hier
  Mit Zitat antworten Zitat
Michael II

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
760 Beiträge
 
Delphi 11 Alexandria
 
#30

AW: Transparenz-Farbe von TImage ändern

  Alt 28. Apr 2024, 17:58

Das wird alles immer verwirrender hier
Hast du an der roten Farbe "rumgeschraubt" . Ich behaupte nun, dass der König nicht weiss sein muss - du hast diesen ja 233,233,233 definiert - also alles OK (falls er dann bei dir auch transparent...).
Michael Gasser
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      

 

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:35 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