Thema: Delphi Farben ersetzen

Einzelnen Beitrag anzeigen

Jarmen_Kell

Registriert seit: 17. Mär 2005
188 Beiträge
 
#1

Farben ersetzen

  Alt 19. Mär 2005, 19:25
Hallo,
also ich weiß, die Frage ist mal wieder auf etwas tieferem Niveau, aber irgendwie komm ich nicht dahinter.
Die folgende Prozedur soll in einem Bestimmten Bereich auf einem TCanvas alle Pixel, die eine bestimmte Farbe haben, durch eine andere Farbe ersetzen.
Der Bereich wird durch MouseDown und MouseUp auf dem Image festgelegt.
Bei dieser Prozedur:

Delphi-Quellcode:
procedure Tmainform.colorchange;
var
  Ix,Iy:Integer;
begin
  for Ix:=moused.X to current.X do
    for Iy:=moused.Y to current.Y do
      if img.Canvas.Pixels[Ix,Iy]=pencolor
        then img.Canvas.Pixels[Ix,Iy]:=brushcolor;
end;
geht das ganze nur, wenn der Erste punkt, also der MouseDown-Punkt auf dem Canvas der OBEN LINKS ist.

ich habe dann folgendes geschrieben:

Delphi-Quellcode:
procedure Tmainform.colorchange;
var
  Ix,Iy:Integer;
  x1,x2,y1,y2:Integer;
begin
  if moused.X < current.X then x1:=moused.X else x1:=current.X;
  if moused.Y < current.Y then y1:=moused.Y else y1:=current.Y;
  if moused.X < current.X then x2:=current.X else x2:=moused.X;
  if moused.Y < current.Y then y2:=current.Y else y2:=moused.Y;
  for Ix:=x1 to x2 do
    for Iy:=y1 to y2 do
      if img.Canvas.Pixels[Ix,Iy]=pencolor
        then img.Canvas.Pixels[Ix,Iy]:=brushcolor;
end;
Das geht "natürlich" wunderbar, aber ich frage mich, warum die andere Version nicht funktioniert.
Wäre schön, wenn das jemand beantworten könnte.
  Mit Zitat antworten Zitat