![]() |
aus TImage (gestretcht) ohne Verluste zuschneiden / kopieren
Hallo,
In einem TImage lade ich ein Bild um es zuzuschneiden. So lange wie das Bild nicht die Größe des TImage überschreitet und ich Stretch nicht auf true setzen muss, funktionieren die prozeduren CopyRect oder bltbit einwandfrei, da sie die Bildimformationen aus dem Image.Canvas holen. Ist das Bild wesentlich größer, gibt es schon Probleme. Dises verlieren schlichtweg an Qualität wenn sie vorher gestretcht wurde. Ich bräuchte also die Information aus den Image.Picture.Canvas, da diese nicht gestetcht wird. Nur ist diese eben nicht sichtbar. Das "Auswahlfenster" befindet sich aber auf das sichtbare und eben gestretchte Element. Ich müsste also die Koordinaten des Auswahl-Rechteck's irgendwie vom Image.canvas auf Image.picture.Canvas übertragen. Nur wie? Mein bisheriger Code:
Delphi-Quellcode:
Gibt es eine andere Möglichkeit?
procedure TForm7.sButton2Click(Sender: TObject);
var Tmp_Bmp_dest_32:TBitmap32; cast:TRect; begin Tmp_Bmp_dest_32:=TBitmap32.Create; Tmp_Bmp_dest_32.Height:=auswahl.Height; Tmp_Bmp_dest_32.Width:=auswahl.Width; cast.Left:=auswahl.Left+2; cast.Top:=auswahl.Top+2; cast.Right:=auswahl.Left + auswahl.Width-2; cast.Bottom:= auswahl.Top + auswahl.Height-2; Tmp_Bmp_dest_32.Canvas.CopyMode:=cmSrcCopy; Tmp_Bmp_dest_32.Canvas.CopyRect(Tmp_Bmp_dest_32.ClipRect,im32.Canvas,cast); //Hier wäre das Bild ohne Verlust kopiert aber der Inhalt wurde von einer //anderen Position kopiert, WENN Image getretcht ist. //Tmp_Bmp_dest_32.Canvas.CopyRect(Tmp_Bmp_dest_32.ClipRect,im32.picture.Canvas,cast); im32.Bitmap.Assign(Tmp_Bmp_dest_32); auswahl.Visible:= False; Tmp_Bmp_dest_32.Free; sButton2.Enabled:=False; end; Danke schon mal im Voraus. |
AW: aus TImage (gestretcht) ohne Verluste zuschneiden / kopieren
Mach Dir eine Umrechenfunktion der Du Image als Parameter mitgibst und die ein Rect als Ergebnis zurückgibt.
Hier prüfen ob Icon assigned ist oder Graphic assigend oder Bitmap assigend vom jeweiligen Element die Höhe und Breite ziehen und Result aus dem Paramter Image.Width/Height zu den gefunden Werten umrechnen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:40 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