Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Farbe eines TBitmap schnell durch eine andere ersetzen (https://www.delphipraxis.net/62840-farbe-eines-tbitmap-schnell-durch-eine-andere-ersetzen.html)

ferby 10. Feb 2006 10:19


Farbe eines TBitmap schnell durch eine andere ersetzen
 
Hallo,

Ich habe ein TBitmap das 200*200 Pixel groß ist.
Ich habe es Grafik gennant
(grafik: TBitmap;)

durch den folgenden code wird eine bestemmte farbe (farbe_alt) durch eine neue ersetzt.
Leider dauert das ewig. kennt ihr eine schnellere Methode?


Delphi-Quellcode:
      for i:=0 to Grafik.width do
      for i2:=0 to Grafik.height do
      if Grafik.Canvas.Pixels[i,i2]=alt_farbe then
      Grafik.Canvas.Pixels[i,i2]:=colordialog.color;

mkinzler 10. Feb 2006 10:27

Re: Farbe eines TBitmap schnell durch eine andere ersetzen
 
Wenn das Bild palettenorientiert ist <=256 Farben, reicht es die Farbe in der Palette zu ändern.

Khabarakh 10. Feb 2006 11:41

Re: Farbe eines TBitmap schnell durch eine andere ersetzen
 
Anonsten kannst du Delphi-Referenz durchsuchenScanline statt Pixels benutzen.

ferby 10. Feb 2006 15:37

Re: Farbe eines TBitmap schnell durch eine andere ersetzen
 
Hallo,

es sind weniger als 256 Farben, wie verwende ich eine Palette ??

ich habe mir gerade ScanLine angeschaut, wie soll mir das in meinen fall weiterhelfen?

Ferby

mkinzler 10. Feb 2006 15:56

Re: Farbe eines TBitmap schnell durch eine andere ersetzen
 
Du verwendest sie schon ;-)
Bilder < 256 Farben arbeiten mit einer sogeannaten Farbpalette. D.h. es wird im Bildpunkt nicht die Frabe angegeben, sondern nur der Index der Farbpalette. In der Farbpalette wird nun der wirkliche Farbwert angegeben. (> 8Bit, bei Std-VGA 18 Bit).

ein Bitmap hat die Eigenschaft Property Palette vom Typ HPALETTE.

ferby 10. Feb 2006 16:18

Re: Farbe eines TBitmap schnell durch eine andere ersetzen
 
Hallo,

und wie kann ich jetzt damit mein Problemm beseitigen?
Wie ändere ich eine Farbe in der Farbpallete??

kannst du mir ein wenig beispielcode geben?


Ferby

mkinzler 10. Feb 2006 17:13

Re: Farbe eines TBitmap schnell durch eine andere ersetzen
 
Ich hoffe das funktioniert so
Delphi-Quellcode:
//Palette sichern
   GetPaletteEntries(img.Palette, 0, 256, Colors[0]);
   //Palette manipulieren
   Colors[10] := rgb( 10,20,60);
   //Palette des Bildes auf geänderte Palette setzen
   SetPaletteEntries(img.Palette, 0, 256, Colors[0]);
img ist vom Typ TBitmap.
Annahme 8Bit-Bild

ferby 10. Feb 2006 17:39

Re: Farbe eines TBitmap schnell durch eine andere ersetzen
 
Hallo,

leider passiert nichts wenn der quellcode ausgeführt wird.
es kommt keine fehlermeldung aber es ändert sich auch nichts an dem TBitmap??

Brauche Hilfe :-(

mkinzler 10. Feb 2006 17:48

Re: Farbe eines TBitmap schnell durch eine andere ersetzen
 
Vielleicht existiert kein Pixel mit Index 10. Ändere mal andere Indices.

ferby 10. Feb 2006 17:52

Re: Farbe eines TBitmap schnell durch eine andere ersetzen
 
Hallo,

???
Was ist bei dir überhaupt Colors? Welcher Variabel Typ, für was wird es verwendet?


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:41 Uhr.
Seite 1 von 2  1 2      

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