![]() |
Re: Bild an der x-aschse spiegeln
Zitat:
Zitat:
|
Re: Bild an der x-aschse spiegeln
Ahh alles klar danke jetzt hab ichs verstanden bin in dem bereich noch ein ziemlicher noob aber rigednwie logisch da du den genauen bezeichner nicht kennst nennst du mir einfach en oberbegriff... :)
jetzt bekomm ich aber den fehler das bitmap ein undefinierter bezeichner ist aber warum? "Die Eigenschaft Bitmap gibt an, dass der Inhalt des TPicture-Objekts eine Bitmap-Grafik (Dateiformat .BMP) ist." und das bild welches ich bearbeiten möchte ist bmp und wenn ich .bitmap immer rausnehme bekomm ich dne fehler das hier
Delphi-Quellcode:
ein semikolon oder operator fehlt
Bild(Sender);
|
Re: Bild an der x-aschse spiegeln
Ich habe mir den Code jetzt nicht genau angeguckt, habe aber einen anderen Vorschlag, den auch du bestimmt verstehst. Hab mal ne kleine Prozedur geschrieben:
Delphi-Quellcode:
Dabei muss das Bild ein Bitmap sein, sonst gints nen Fehler.
procedure Spiegeln(Bild:TImage; var NeuesBild:TImage);
var i,j:integer; begin for i:=0 to Bild.width do for j:=0 to Bild.height do NeuesBild.canvas.pixels[i,j]:=Bild.canvas.pixels[Bild.width-i,Bild.height-j]; end; //////Beispielaufruf: procedure TForm1.Button1Click(Sender: TObject); begin Spiegeln(Image1,Image2);//Image1 ist das Ausgangsbild, Image2 dann das gespiegelte end; Mfg, Robert |
Re: Bild an der x-aschse spiegeln
Ich habs jetzt mal irgendwie ein wenig umgeschrieben... das jetzt keine fehler mehr kommen und ich das programm wenigstens starten kann so sieht der quellcode jetzt aus:
Delphi-Quellcode:
das problem ist er nimmt jetzt nur die rechte seite des bildes und spiegelt es :/
procedure Spiegele (Bild:TImage);
var i,j:integer; begin for i:=0 to Bild.width do for j:=0 to Bild.height do Bild.canvas.pixels[i,j]:=Bild.canvas.pixels[Bild.width-i,Bild.height-j]; end; |
Re: Bild an der x-aschse spiegeln
Das ist mir auch aufgefallen, darum hatte ich es mit einer Ausgabe-Variable gemacht.
Das passiert, weil deine Prozedur das Bild zum berechnen nimmt, während es schon neu gezeichnet wird. Mein Code müsste aber problemlos funktionieren. Mfg |
Re: Bild an der x-aschse spiegeln
nicht ganz hier
Delphi-Quellcode:
hier sagt er mit aus irgendeingrund ( habe Button1Click angepasst zu BSpiegelnClick)
procedure TForm1.Button1Click(Sender: TObject);
ähm das er nach TForm1 ein ; aber kein . erwartet |
Re: Bild an der x-aschse spiegeln
@Fussball-Robby: Dann schreib aber auch dazu, dass er sich mit der Funktion auch erstmal bei leicht grösseren Bildern eine Tasse Kaffee aufsetzen kann. Es gibt wirklich keine langsamere Möglichkeit ein Bild zu spiegeln als über die Pixels[] Eigenschaft. Nutz doch sonst wenigstens die ScanLine[] Property von TBitmap, das würde das ganze nochmal deutlich verschnellern.
@andiak:
Delphi-Quellcode:
Aufruf mit z.B.
procedure Spiegeln(Bild: TBitmap);
Begin StretchBlt(Bild.Canvas.Handle, 0, 0, Bild.Width, Bild.Height, Bild.Canvas.Handle, Bild.Width - 1, 0, -Bild.Width, Bild.Height, SRCCopy); end;
Delphi-Quellcode:
Spiegeln(Image1.Picture.Bitmap);
|
Re: Bild an der x-aschse spiegeln
Jetzt bekomm ich den fehler das Bei der vorherigen Deklaration von Spiegele wurde die Direktive "overlord" nicth angegeben was bedeutet den das schonwieder?? die delphi hilfe kann mir auch nicht helfen :/
Delphi-Quellcode:
unit UFabian;
interface uses ExtCtrls; procedure Spiegele(Bild: TImage); implementation uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; procedure Spiegele(Bild: TBitmap); Begin StretchBlt(Bild.Canvas.Handle, 0, 0, Bild.Width, Bild.Height, Bild.Canvas.Handle, Bild.Width - 1, 0, -Bild.Width, Bild.Height, SRCCopy); end; end. Wo soll ich den Spiegeln(Image1.Picture.Bitmap); einfügen?? |
Re: Bild an der x-aschse spiegeln
1. Du hast immernoch eine ellenlange Uses Liste. Siehe meinen Hinweis zuvor.
2. Du hast in der Implementation eine andere Argumentenliste als in der Deklaration der Funktion 3. Wann willst du das Bild denn spiegeln? z.B. auf einen Button Click? |
Re: Bild an der x-aschse spiegeln
ja weil das ein neuer code von dir ist habe ich alle wieder reingetan (ist dochn icht schlim) das keine fheler auftauchen
brauchen tue ich aber nur uses Windows, Graphics; 2. von dir verstehe ich garnicht 3. In einer anderen Unit steht
Delphi-Quellcode:
procedure TForm1.BSpiegelnClick(Sender: TObject);
begin Spiegele(Image1) end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:36 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