![]() |
BitBld und Anzeige in Image
Nabend allerseits,
ich versuche bei einem Bitmap (bmp1) die Kanten abzuschneiten und das Ergebnis (bmp2) in einem TImage anzuzeigen. So gehts:
Code:
so aber nicht:
procedure TForm1.Button5Click(Sender: TObject);
var breite, hoehe: integer; begin breite := bmp1.Width-5; hoehe := bmp1.Height-7; BitBlt(image2.Canvas.Handle,0,0,breite,hoehe,bmp1.Canvas.Handle,0,0,SRCCOPY); end;
Code:
In Image2 erscheint schlicht gar nix. Ich hätte aber gerne diese Variante. Was mache ich falsch?
procedure TForm1.Button5Click(Sender: TObject);
var breite, hoehe: integer; begin breite := bmp1.Width-5; hoehe := bmp1.Height-7; BitBlt(bmp2.Canvas.Handle,0,0,breite,hoehe,bmp1.Canvas.Handle,0,0,SRCCOPY); Image2.Picture.Bitmap := bmp2; end; Gruß, Stephan. |
AW: BitBld und Anzeige in Image
Man zeichnet nicht direkt auf die Canvas einer TImage-Komponente! Wenn doch, dann muss die Komponente wohl "gerefreshed" werden. Nimm aber lieber eine PaintBox zur Ausgabe der Grafik.
mfg Edit: Das mit dem Refresh bzw. Neuzeichnen sollte auch bei deiner zweiten Variante helfen... Edit2: Willkommen übrigens in der Delphi-Praxis ;) |
AW: BitBld und Anzeige in Image
Hi Patti,
Zitat:
Das mit dem Refresh hab ich nich verstanden. So gehts jedenfalls auch nicht:
Code:
grübel, grübel...
BitBlt(bmp2.Canvas.Handle,0,0,breite,hoehe,bmp1.Canvas.Handle,0,0,SRCCOPY);
Image2.Picture.Bitmap := bmp2; Image2.Refresh; |
AW: BitBld und Anzeige in Image
Zitat:
Bernhard |
AW: BitBld und Anzeige in Image
Hi Bernhard,
Code:
geht auch nicht, da kommt dann eine Fehlermeldung (EAccessViolation ...)
BitBlt(bmp2.Canvas.Handle,0,0,breite,hoehe,bmp1.Canvas.Handle,0,0,SRCCOPY);
Image2.Picture.Graphic.Assign(bmp2); |
AW: BitBld und Anzeige in Image
Klingt sehr komisch. Hast du dein Bitmap auch richtig erstellt?
Bernhard |
AW: BitBld und Anzeige in Image
Hi Bernhard,
ich bin mir nicht ganz sicher, was man da alles machen muss, aber als globale Variable:
Code:
und dann:
var
Form1: TForm1; bmp1, bmp2 : TBitmap; implementation {$R *.dfm}
Code:
das müsste doch eigentlich reichen, oder?
procedure TForm1.FormCreate(Sender: TObject);
begin bmp1 := TBitmap.Create; bmp2 := TBitmap.Create; end; |
AW: BitBld und Anzeige in Image
Hallo,
Die Zeile
Delphi-Quellcode:
Image2.Picture.Bitmap := bmp2;
stimmt schon. Im Setter des Bitmaps wird das zugewiesene Bitmap assigned. Daran liegts nicht. Ich tippe mal, dass es so gehen könnte:
Delphi-Quellcode:
procedure TForm1.Button5Click(Sender: TObject);
var breite, hoehe: integer; begin breite := bmp1.Width-5; hoehe := bmp1.Height-7; // Maße von bmp2 setzen bmp2.Width := breite; bmp2.Height := hoehe; BitBlt(bmp2.Canvas.Handle,0,0,breite,hoehe,bmp1.Canvas.Handle,0,0,SRCCOPY); Image2.Picture.Bitmap := bmp2; end; |
AW: BitBld und Anzeige in Image
Hallo Michael,
super, das wars! :-D Vielen Dank! Stephan. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:08 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