![]() |
farbe ersetzen
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:
gibt es da ne schnellere möglichkeit?
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; |
Re: farbe ersetzen
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 |
Re: farbe ersetzen
TBitmap.Scanline oder die Graphics32-Library (
![]() |
Re: farbe ersetzen
ok...
wie geh ich mit dem scanline um? das liefert mir ein TByteArray zurück und was kann ich dann damit machen? |
Re: farbe ersetzen
Das ist nicht immer so pauschal beantwortbar. Es kommt darauf an, welches PixelFormat dein Bitmap hat. Es gibt zu Scanline auch gute Tutorials (
![]() 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 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:29 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz