Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Bildgröße verändern (https://www.delphipraxis.net/105295-bildgroesse-veraendern.html)

BigBen 19. Dez 2007 12:03


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:
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.
Bin über jede Hilfe dankbar

LG
Benny

DeddyH 19. Dez 2007 12:13

Re: Bildgröße verändern
 
Du hast die Objekte nicht instanziiert.
Delphi-Quellcode:
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.
[edit] Vertipper korrigiert [/edit]

Tyrael Y. 19. Dez 2007 12:14

Re: Bildgröße verändern
 
Objekte müssen erzeugt und wieder freigegeben werden


Delphi-Quellcode:
var MyTest: TEinTyp;
...
  MyTest := TEinTyp.Create();
...
  MyTest.Free
...ausserdem was erwartest du von deiner Variablen Cut?
...es hat keine Wert zugewiesen bekommen, was soll es nach deiner Meinung bewirken?

BigBen 19. Dez 2007 12:29

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

DeddyH 19. Dez 2007 12:32

Re: Bildgröße verändern
 
*Argh* :wall: , Sch*** Copy & Paste.
Delphi-Quellcode:
BitBlt(TargetBitmap.Canvas.Handle, 0, 0, TargetBitmap.Width, TargetBitmap.Height, SourceBitmap.Canvas.Handle, 0, 0, SRCCOPY);
So sollte es klappen.

BigBen 19. Dez 2007 12:43

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