AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

farbe ersetzen

Ein Thema von gekmihesg · begonnen am 11. Mai 2004 · letzter Beitrag vom 11. Mai 2004
Antwort Antwort
gekmihesg
(Gast)

n/a Beiträge
 
#1

farbe ersetzen

  Alt 11. Mai 2004, 12:48
ich möchte in einem tbitmap eine farbe koplett durch eine andere farbe ersetzen (so wie bei paint mit dem eimer nur ohne grenzen).

ich hab das so gelöst:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  x,y: integer;
//lc: TColor (global)
begin
  for y:=0 to image1.Height-1 do
    for x:=0 to image1.Width-1 do
      if image1.Canvas.Pixels[x,y] = lc then
        image1.Canvas.Pixels[x,y]:=colorbox1.Selected;
  lc:=colorbox1.Selected;
end;
gibt es da ne schnellere möglichkeit?
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#2

Re: farbe ersetzen

  Alt 11. Mai 2004, 12:59
Moin!

Klar, du kannst das ganze über die ScanLine[] Property ansprechen, das dürfte schneller gehen. Problem ist dabei nur, das du die unterschiedlichen Farbtiefen einzelnd behandeln musst.

MfG
Muetze1
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: farbe ersetzen

  Alt 11. Mai 2004, 12:59
TBitmap.Scanline oder die Graphics32-Library ( www.g32.org )
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
gekmihesg
(Gast)

n/a Beiträge
 
#4

Re: farbe ersetzen

  Alt 11. Mai 2004, 13:49
ok...
wie geh ich mit dem scanline um?
das liefert mir ein TByteArray zurück und was kann ich dann damit machen?
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: farbe ersetzen

  Alt 11. Mai 2004, 16:50
Das ist nicht immer so pauschal beantwortbar. Es kommt darauf an, welches PixelFormat dein Bitmap hat. Es gibt zu Scanline auch gute Tutorials (Dieses ab Seite 2 dürfte dich interessieren).

Mit der Graphics32 brauchst du im Übrigen nur TBitmap durch TBitmap32 ersetzen, und das Farbformat ist nicht TColor, sondern TColor32 (ist in der Hilfe zu g32 beschrieben). Im wesentlichen genau so habhabbar wie TColor.
Die Eigenschaft Pixels[x,y] ist bei der g32 auch dabei, aber deutlich performanter implementiert
Das soll heissen, dass du deinen Code mit der g32 nur minimal verändern müsstest (Sie bietet auch noch einige weitere Annehmlichkeiten!)

gruss,
dizzy
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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