![]() |
Bildgröße verändern
Hallo,
ich möchte 50 Pixel der rechten Seite eines Bitmaps abschneiden. Mir ist aber nicht klar, wie die Zuweisung der cut-Daten hinhaut. (Dat is meine erste Woche, die ich mich mit Delphi beschäftigen muss :wall: ) Der folgende Code lässt sich zwar compilieren, gibt dann aber einen Fehler aus: --------------------------- Anwendungsfehler --------------------------- Exception EAccessViolation in Modul Bmp_resize.exe bei 000153B1. Zugriffsverletzung bei Adresse 004153B1 in Modul 'Bmp_resize.exe'. Lesen von Adresse 00000001.
Delphi-Quellcode:
Bin über jede Hilfe dankbar
program Bmp_resize;
uses Windows, Graphics; {$R *.res} var SourceBitmap : TBitmap; TargetBitmap : TBitmap; Cut : TRect; begin SourceBitmap.LoadFromFile('ausweis.bmp'); TargetBitmap.Width := Cut.Right - Cut.Left; TargetBitmap.Height := Cut.Bottom - Cut.Top; BitBlt(TargetBitmap.Canvas.Handle, 0, 0, 50, 0, SourceBitmap.Canvas.Handle, 0, 0, SRCCOPY); TargetBitmap.SaveToFile('ausweis.bmp'); end. LG Benny |
Re: Bildgröße verändern
Du hast die Objekte nicht instanziiert.
Delphi-Quellcode:
[edit] Vertipper korrigiert [/edit]
program Bmp_resize;
uses Windows, Graphics; {$R *.res} var SourceBitmap : TBitmap; TargetBitmap : TBitmap; begin SourceBitmap := TBitmap.Create; TargetBitmap := TBitmap.Create; try SourceBitmap.LoadFromFile('ausweis.bmp'); TargetBitmap.Width := SourceBitmap.Width - 50; TargetBitmap.Height := SourceBitmap.Height; BitBlt(TargetBitmap.Canvas.Handle, 0, 0, 50, 0, SourceBitmap.Canvas.Handle, 0, 0, SRCCOPY); TargetBitmap.SaveToFile('ausweis.bmp'); finally SourceBitmap.Free; TargetBitmap.Free; end; end. |
Re: Bildgröße verändern
Objekte müssen erzeugt und wieder freigegeben werden
Delphi-Quellcode:
...ausserdem was erwartest du von deiner Variablen Cut?
var MyTest: TEinTyp;
... MyTest := TEinTyp.Create(); ... MyTest.Free ...es hat keine Wert zugewiesen bekommen, was soll es nach deiner Meinung bewirken? |
Re: Bildgröße verändern
Dat funktioniert eigentlich wunderbar. Das Bild wird um 50 Pixel verkleinert, aber das TargetBitmap ist nur ein leerer Kasten.
Sorry, bin halt noch n blutiger Delphi - Beginner. Gruß Benny |
Re: Bildgröße verändern
*Argh* :wall: , Sch*** Copy & Paste.
Delphi-Quellcode:
So sollte es klappen.
BitBlt(TargetBitmap.Canvas.Handle, 0, 0, TargetBitmap.Width, TargetBitmap.Height, SourceBitmap.Canvas.Handle, 0, 0, SRCCOPY);
|
Re: Bildgröße verändern
1000 Dank!
Dat is genau dat wat ich brauche! Schön, dass es noch Profis gibt, die den Anfängern unter die Arme greifen. :thumb: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:30 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