AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia BitBld und Anzeige in Image
Thema durchsuchen
Ansicht
Themen-Optionen

BitBld und Anzeige in Image

Ein Thema von nezumi7 · begonnen am 11. Apr 2011 · letzter Beitrag vom 11. Apr 2011
Antwort Antwort
nezumi7

Registriert seit: 11. Apr 2011
71 Beiträge
 
#1

BitBld und Anzeige in Image

  Alt 11. Apr 2011, 20:10
Nabend allerseits,

ich versuche bei einem Bitmap (bmp1) die Kanten abzuschneiten und das Ergebnis (bmp2) in einem TImage anzuzeigen.

So gehts:
Code:
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;
so aber nicht:
Code:
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;
In Image2 erscheint schlicht gar nix. Ich hätte aber gerne diese Variante. Was mache ich falsch?

Gruß, Stephan.
  Mit Zitat antworten Zitat
Benutzerbild von patti
patti

Registriert seit: 20. Okt 2004
Ort: Mittelfranken
665 Beiträge
 
Turbo Delphi für Win32
 
#2

AW: BitBld und Anzeige in Image

  Alt 11. Apr 2011, 20:12
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
Patrick Kreutzer
[Informatik-Student im 4. Semester]
http://www.patti-k.de/

Geändert von patti (11. Apr 2011 um 20:14 Uhr)
  Mit Zitat antworten Zitat
nezumi7

Registriert seit: 11. Apr 2011
71 Beiträge
 
#3

AW: BitBld und Anzeige in Image

  Alt 11. Apr 2011, 20:26
Hi Patti,

Man zeichnet nicht direkt auf die Canvas einer TImage-Komponente!
ja, auch deshalb will ich ja die zweite Variante. Ich glaube der Fehler liegt eher bei der Zeile BitBlt...

Das mit dem Refresh hab ich nich verstanden. So gehts jedenfalls auch nicht:
Code:
BitBlt(bmp2.Canvas.Handle,0,0,breite,hoehe,bmp1.Canvas.Handle,0,0,SRCCOPY);
Image2.Picture.Bitmap := bmp2;
Image2.Refresh;
grübel, grübel...
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#4

AW: BitBld und Anzeige in Image

  Alt 11. Apr 2011, 20:42
Code:
BitBlt(bmp2.Canvas.Handle,0,0,breite,hoehe,bmp1.Canvas.Handle,0,0,SRCCOPY);
Image2.Picture.Bitmap := bmp2;
Image2.Refresh;
Da ist noch ein klitzekleiner Fehler drin. Das muss heißen: Image2.Picture.Graphic.Assign().

Bernhard
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
nezumi7

Registriert seit: 11. Apr 2011
71 Beiträge
 
#5

AW: BitBld und Anzeige in Image

  Alt 11. Apr 2011, 20:56
Hi Bernhard,
Code:
BitBlt(bmp2.Canvas.Handle,0,0,breite,hoehe,bmp1.Canvas.Handle,0,0,SRCCOPY);
Image2.Picture.Graphic.Assign(bmp2);
geht auch nicht, da kommt dann eine Fehlermeldung (EAccessViolation ...)
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#6

AW: BitBld und Anzeige in Image

  Alt 11. Apr 2011, 21:04
Klingt sehr komisch. Hast du dein Bitmap auch richtig erstellt?

Bernhard
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
nezumi7

Registriert seit: 11. Apr 2011
71 Beiträge
 
#7

AW: BitBld und Anzeige in Image

  Alt 11. Apr 2011, 21:09
Hi Bernhard,

ich bin mir nicht ganz sicher, was man da alles machen muss, aber als globale Variable:

Code:
var
  Form1: TForm1;
  bmp1, bmp2 : TBitmap;
implementation

{$R *.dfm}
und dann:
Code:
procedure TForm1.FormCreate(Sender: TObject);
begin
bmp1 := TBitmap.Create;
bmp2 := TBitmap.Create;
end;
das müsste doch eigentlich reichen, oder?
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#8

AW: BitBld und Anzeige in Image

  Alt 11. Apr 2011, 21:39
Hallo,

Die Zeile

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;
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
nezumi7

Registriert seit: 11. Apr 2011
71 Beiträge
 
#9

AW: BitBld und Anzeige in Image

  Alt 11. Apr 2011, 21:58
Hallo Michael,

super, das wars!


Vielen Dank!

Stephan.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:59 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz