AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Bild an der x-aschse spiegeln

Ein Thema von andiak · begonnen am 28. Feb 2008 · letzter Beitrag vom 16. Mär 2008
Antwort Antwort
Seite 2 von 5     12 34     Letzte »    
Muetze1
(Gast)

n/a Beiträge
 
#11

Re: Bild an der x-aschse spiegeln

  Alt 14. Mär 2008, 12:23
Zitat von andiak:
Am Anfang hatte ich den Fehler das StretchBlt undefiniert ist dann habe ich mal alle Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
eingefügt... würde gerne wissen welche der oberen uses gebraucht wird um StretchBlt ausführen zu können
Vorschlag: Lösch eine Unit nach der anderen wieder aus der Uses Liste, bis StretchBlt() wieder undefiniert ist. Diese Unit dann lassen, alle anderen weg.

Zitat von andiak:
in der procedure steht jetzt
Delphi-Quellcode:
procedure Spiegele(Bild: TImage);

Begin
      StretchBlt(TImage.Bild.Bitmap.Canvas.Handle, 0, 0, TImage.Bild.Width,
         TImage.Bild.Height, TImage.Bild.Bitmap.Canvas.Handle,
         TImage.Bild.Width - 1, 0, - TImage.Bild.Width,
         TImage.Bild.Height, SRCCopy);
       TImage.Bild(Sender);
      end;
aber jetzt sagt er mir das "Bild" undefiniert ist aber normalerweise dürfte der doch vorhanden sein Bild ist TImage
Hier mal mein kompletter Quellcode. :/ wo liegt hier der fehler? Ich habe ausprobiert bei TImage.Bild immer das TImage zu enterfernen da Bild ja schon TImage ist :/ ist das richtig das zu entfernnen oder muss das da bleiben??
Meine Angaben waren anders gemeint. Ich weiss ja das du mit einem TImage arbeitest, weiss aber nicht wie du dieses nennst. Du kannst es ja von "Image1" bis "Klumbfuss" alle möglichen Namen geben. Von daher kann ich dir schlecht fertigen Code schreiben und dadurch habe ich einfach das verwendet, was "Image1" und "Klumbfuss" gemeinsam hätten: den Klassennamen. Somit TImage. Ich hoffe mal, damit sollte der Fehler klar sein.
  Mit Zitat antworten Zitat
andiak

Registriert seit: 1. Nov 2007
89 Beiträge
 
#12

Re: Bild an der x-aschse spiegeln

  Alt 14. Mär 2008, 14:46
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 Bild(Sender); ein semikolon oder operator fehlt
  Mit Zitat antworten Zitat
Benutzerbild von Fussball-Robby
Fussball-Robby

Registriert seit: 22. Okt 2007
Ort: Nähe Köln
1.063 Beiträge
 
Delphi 7 Enterprise
 
#13

Re: Bild an der x-aschse spiegeln

  Alt 14. Mär 2008, 15:41
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:
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;
Dabei muss das Bild ein Bitmap sein, sonst gints nen Fehler.

Mfg, Robert
Robert L.
  Mit Zitat antworten Zitat
andiak

Registriert seit: 1. Nov 2007
89 Beiträge
 
#14

Re: Bild an der x-aschse spiegeln

  Alt 14. Mär 2008, 16:38
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:
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;
das problem ist er nimmt jetzt nur die rechte seite des bildes und spiegelt es :/
  Mit Zitat antworten Zitat
Benutzerbild von Fussball-Robby
Fussball-Robby

Registriert seit: 22. Okt 2007
Ort: Nähe Köln
1.063 Beiträge
 
Delphi 7 Enterprise
 
#15

Re: Bild an der x-aschse spiegeln

  Alt 14. Mär 2008, 16:45
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
Robert L.
Der folgende Satz ist richtig!
Der vorherige Satz ist falsch!

Paradox
  Mit Zitat antworten Zitat
andiak

Registriert seit: 1. Nov 2007
89 Beiträge
 
#16

Re: Bild an der x-aschse spiegeln

  Alt 14. Mär 2008, 17:08
nicht ganz hier
procedure TForm1.Button1Click(Sender: TObject); hier sagt er mit aus irgendeingrund ( habe Button1Click angepasst zu BSpiegelnClick)
ähm das er nach TForm1 ein ; aber kein . erwartet
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#17

Re: Bild an der x-aschse spiegeln

  Alt 14. Mär 2008, 17:14
@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:
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;
Aufruf mit z.B. Spiegeln(Image1.Picture.Bitmap);
  Mit Zitat antworten Zitat
andiak

Registriert seit: 1. Nov 2007
89 Beiträge
 
#18

Re: Bild an der x-aschse spiegeln

  Alt 14. Mär 2008, 17:22
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??
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#19

Re: Bild an der x-aschse spiegeln

  Alt 14. Mär 2008, 17:34
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?
  Mit Zitat antworten Zitat
andiak

Registriert seit: 1. Nov 2007
89 Beiträge
 
#20

Re: Bild an der x-aschse spiegeln

  Alt 14. Mär 2008, 17:46
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;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 5     12 34     Letzte »    


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 23:51 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