AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Farbe eines TBitmap schnell durch eine andere ersetzen
Thema durchsuchen
Ansicht
Themen-Optionen

Farbe eines TBitmap schnell durch eine andere ersetzen

Ein Thema von ferby · begonnen am 10. Feb 2006 · letzter Beitrag vom 10. Feb 2006
Antwort Antwort
Seite 1 von 2  1 2      
ferby

Registriert seit: 15. Aug 2004
Ort: Wien
841 Beiträge
 
Delphi 2010 Enterprise
 
#1

Farbe eines TBitmap schnell durch eine andere ersetzen

  Alt 10. Feb 2006, 10:19
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;
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Farbe eines TBitmap schnell durch eine andere ersetzen

  Alt 10. Feb 2006, 10:27
Wenn das Bild palettenorientiert ist <=256 Farben, reicht es die Farbe in der Palette zu ändern.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#3

Re: Farbe eines TBitmap schnell durch eine andere ersetzen

  Alt 10. Feb 2006, 11:41
Anonsten kannst du Delphi-Referenz durchsuchenScanline statt Pixels benutzen.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
ferby

Registriert seit: 15. Aug 2004
Ort: Wien
841 Beiträge
 
Delphi 2010 Enterprise
 
#4

Re: Farbe eines TBitmap schnell durch eine andere ersetzen

  Alt 10. Feb 2006, 15:37
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
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Farbe eines TBitmap schnell durch eine andere ersetzen

  Alt 10. Feb 2006, 15:56
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.
Markus Kinzler
  Mit Zitat antworten Zitat
ferby

Registriert seit: 15. Aug 2004
Ort: Wien
841 Beiträge
 
Delphi 2010 Enterprise
 
#6

Re: Farbe eines TBitmap schnell durch eine andere ersetzen

  Alt 10. Feb 2006, 16:18
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
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Farbe eines TBitmap schnell durch eine andere ersetzen

  Alt 10. Feb 2006, 17:13
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
Markus Kinzler
  Mit Zitat antworten Zitat
ferby

Registriert seit: 15. Aug 2004
Ort: Wien
841 Beiträge
 
Delphi 2010 Enterprise
 
#8

Re: Farbe eines TBitmap schnell durch eine andere ersetzen

  Alt 10. Feb 2006, 17:39
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
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Farbe eines TBitmap schnell durch eine andere ersetzen

  Alt 10. Feb 2006, 17:48
Vielleicht existiert kein Pixel mit Index 10. Ändere mal andere Indices.
Markus Kinzler
  Mit Zitat antworten Zitat
ferby

Registriert seit: 15. Aug 2004
Ort: Wien
841 Beiträge
 
Delphi 2010 Enterprise
 
#10

Re: Farbe eines TBitmap schnell durch eine andere ersetzen

  Alt 10. Feb 2006, 17:52
Hallo,

???
Was ist bei dir überhaupt Colors? Welcher Variabel Typ, für was wird es verwendet?
  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 06:02 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