Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Einen Bilderausschnitt aus TImage (https://www.delphipraxis.net/41419-einen-bilderausschnitt-aus-timage.html)

PhilGo 3. Mär 2005 00:59


Einen Bilderausschnitt aus TImage
 
Hallo!

Also ich hab einen Bild (Größe je nach Auflösung der Anzeige) in einer TImage-Kompo von der ich mit der Maus einen Bereich auswählen will(Größe des Ausschnitts abhängig von der Auswahl ab)... Dies klappt so weit.
Aber ich will nur den Auschnitt des einen Bilds in eine andere TImage kopieren, aber des klappt net(erzeugt ein Bild der selben Größe des ganzen Bildes)...
Kann mir jemand helfen?

Vielleicht hilft das, wie ich das Bild übergebe:
Form1.Image -> Form2.Image -> Auswählen des Ausschnitts -> Ausschnitt orginal in der Größe des Ausschnitts anzeigen in Form1.Image

Viele Grüße
PhilGo

Luckie 3. Mär 2005 03:35

Re: Einen Bilderausschnitt aus TImage
 
Delphi-Quellcode:
type
  TForm1 = class(TForm)
    Image2: TImage;
    Button1: TButton;
    Image1: TImage;
    procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Image1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
    StartPoint: TPoint;
    EndPoint: TPoint;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  StartPoint.X := X;
  StartPoint.Y := Y;
  Image1.Canvas.Ellipse(X, Y, X + 5, Y + 5);
end;

procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  EndPoint.X := X;
  EndPoint.Y := Y;
  Image1.Canvas.Ellipse(X, Y, X + 5, Y + 5);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  SrcRect, DestRect: TRect;
begin
  Image2.Picture := nil;
  SrcRect.Left := StartPoint.X;
  SrcRect.Top := StartPoint.Y;
  SrcRect.Right := EndPoint.X;
  SrcRect.Bottom := EndPoint.Y;
  DestRect := Rect(0, 0, EndPoint.X - StartPoint.X, EndPoint.Y -
    StartPoint.Y);
  Image2.Canvas.CopyRect(DestRect, Image1.Canvas, SrcRect);
end;

PhilGo 3. Mär 2005 22:31

Re: Einen Bilderausschnitt aus TImage
 
Hallo!

Danke Luckie erstmal für dein Code und das funktioniert auch so weit, aber wenn ich dann das Bild speicher, wird der Ausschnitt in der Größe der Bildschirmauflösung gespeichert... Kann es sein, dass ich Align auf alNone setzen soll? (Bei mir steh es auf alClient)
Ich hab das schon mal in die Routine getan, in der ich den Teilausschnitt erstelle, aber wenn ich dann alNone setze wird in der TImage-Kompo nichts angezeigt...
Hilfe!!! Sorry das ich den Code nicht bereitstellen kann, aber an den komme ich die nächsten 2 Tage nicht ran...


Viele Grüße
Philipp

Luckie 4. Mär 2005 06:21

Re: Einen Bilderausschnitt aus TImage
 
Wie speicherst du denn?

PhilGo 4. Mär 2005 12:57

Re: Einen Bilderausschnitt aus TImage
 
Naja mit dem normalen SavetoFile für Bitmaps und mit JPEGFile für die Jpegs... Eigentlich nichts besonders!

Luckie 4. Mär 2005 13:00

Re: Einen Bilderausschnitt aus TImage
 
Zitat:

Zitat von PhilGo
wird der Ausschnitt in der Größe der Bildschirmauflösung gespeichert...

Also der ist dann zum Beispiel 800x600 Pixel groß oder wie? Zeig mal deinen Code, das kann ich mir nicht vorstellen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:53 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