![]() |
Bild zuschneiden
Hi,
ich würde gerne ein Bild zuschneiden. Ich habe mir überlegt man könnte ja ein Panel benutzen mit welchem man den Bereich auswählt und dann einfach den Rest von einem Bild auf einer Image Komponente wegschneidet. Um mit der Maus das Panel zu positionieren habe ich folgenden Code verwendet:
Delphi-Quellcode:
Das funktioniert auch. Der letzt Schrittt wäre jetzt natürlich den Bereich des Bildes der unter dem Panel liegt verwenden und das Image mit dem was da halt nur unter dem Panel liegt zu ersetzen. Ich habe folgende Funktion gefunden die ich ein bisschen verändert habe damit es geht:
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); begin if ssLeft in Shift then begin Panel1.Left := image1.ScreenToClient(Mouse.CursorPos).x; Panel1.Top := image1.ScreenToClient(Mouse.CursorPos).y; end; end; procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if ssLeft in Shift then begin Panel1.width := panel1.ScreenToClient(Mouse.CursorPos).x; Panel1.height := panel1.ScreenToClient(Mouse.CursorPos).y; end; end;
Delphi-Quellcode:
Aber irgendwie funktioniert das ganze nicht. Es wird immer ein ganz anderer Ausschnitt in das Image gesetzt. Hoffe ihr könnt mir helfen.
var SourceBitmap : TBitmap;
TargetBitmap : TBitmap; cut: TRect; begin if ssright in Shift then begin cut.Top := Panel1.Top; cut.Left := Panel1.Left; cut.BottomRight.X := Panel1.Top + Panel1.Height; cut.BottomRight.Y := Panel1.left + Panel1.Width; // kopiert das Rechteck Cut aus der SourceBitmap in die TargetBitmap // Dabei wird die Größe von TargetBitmap der größe des Ausschnitts angepasst. SourceBitmap:= TBitmap.Create; TargetBitmap:= TBitmap.Create; SourceBitmap := Image1.picture.bitmap; TargetBitmap := Image2.picture.Bitmap; TargetBitmap.Width := Cut.Right - Cut.Left; TargetBitmap.Height := Cut.Bottom - Cut.Top; BitBlt(TargetBitmap.Canvas.Handle, 0, 0, Cut.Right, Cut.Bottom, SourceBitmap.Canvas.Handle, Cut.Left, Cut.Top, SRCCOPY); SourceBitmap.Canvas.Refresh; Image1.picture.bitmap := image2.picture.bitmap; end; end; Gibt auch nen Crosspost im DF. MFG Lars Wiltfang |
Re: Bild zuschneiden
hi
Hab n'en Fehler entdeckt :)
Delphi-Quellcode:
Wieso machst du es mit einem Panel schau dir das mal an:
cut.BottomRight.X := Panel1.Top + Panel1.Height; //hier Left
cut.BottomRight.Y := Panel1.left + Panel1.Width; //hier Top ![]() lg |
Re: Bild zuschneiden
Funktioniert immer noch nicht :( Ist immernoch der falsche Abschnitt.
|
Re: Bild zuschneiden
Zitat:
Delphi-Quellcode:
Gruss
BitBlt(TargetBitmap.Canvas.Handle, 0, 0, Cut.Right - Cut.Left, Cut.Bottom - Cut.Top, SourceBitmap.Canvas.Handle, Cut.Left, Cut.Top, SRCCOPY);
SourceBitmap.Canvas.Refresh; |
Re: Bild zuschneiden
Hey, danke. HAbs zwar noch nicht ausprobiert aber mach ich gleich :) Warum komm ich auf sowas nicht auchmal^^
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:46 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