Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Bild Horizontal spiegeln (vertikal klappt) (https://www.delphipraxis.net/111651-bild-horizontal-spiegeln-vertikal-klappt.html)

andiak 7. Apr 2008 14:16


Bild Horizontal spiegeln (vertikal klappt)
 
Ich habe jetzt ein Code geschrieben womit ich ein Bild Vertikal Spiegeln kann.
Das ist folgender Code

Delphi-Quellcode:
procedure VertikalSpiegele(Bild1:TImage);
var   x,y:integer;
       hilf : TColor;
begin
  for x:=0 to Bild1.width div 2 - 1 do
   for y:=0 to Bild1.height - 1 do
   begin
    hilf := Bild1.canvas.pixels[x,y];
    Bild1.canvas.pixels[x,y]:=Bild1.canvas.pixels[Bild1.width-1-x,y];
    Bild1.canvas.pixels[Bild1.width-1-x,y] := hilf;
   end
end;

Allerdings steig ich da nicht wirklich durch (da mit hilfe des Lehrers geschrieben)
Aber geschrieben hab das wirklich ich
Ich hab an folgendes Gedacht für Horizontal spiegeln:
Delphi-Quellcode:
procedure VertikalSpiegele(Bild1:TImage);
var   x,y:integer;
       hilf : TColor;
begin
  for x:=0 to Bild1.width - 1 do
   for y:=0 to Bild1.height div 2 - 1 do
   begin
    hilf := Bild1.canvas.pixels[x,y];
    Bild1.canvas.pixels[x,y]:=Bild1.canvas.pixels[Bild1.height-1-y,x];
    Bild1.canvas.pixels[Bild1.height-1-y,x] := hilf;
   end
end;
klappt aber nich

kaiser1401 7. Apr 2008 15:28

Re: Bild Horizontal spiegeln (vertikal klappt)
 
schonmal versucht in den letzten beiden zeieln x und y wieder zu tauschen? also

Delphi-Quellcode:
    Bild1.canvas.pixels[x,y]:=Bild1.canvas.pixels[x,Bild1.height-1-y];
    Bild1.canvas.pixels[x,Bild1.height-1-y]:= hilf;


Zu erklärung der ursprünglichen Methode:

stell dir ein Bild vor das 10 Pixel breit ist und 5 hoch

oben links ist pixel (0,0) und unten rechts damit (9,4)

die erste schleife geht von 0 bis 4 (4:= 10 div 2 -1)
die zweite geht die zeien durch, also 0 bis 4

1. merke dir farbe x,y also (0,0)
2. setze farbe x,y := farbe (9,0)
3. setze farbe x,y ;= gemerkte farbe.

verstanden?


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:47 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 by Thomas Breitkreuz