Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Kurze Frage zur PaintBox (https://www.delphipraxis.net/83937-kurze-frage-zur-paintbox.html)

Darkchild 8. Jan 2007 20:20


Kurze Frage zur PaintBox
 
Nabend zusammen,

kurze frage:

Ich versuche mich gerade mal an einem Zeichen-Programm, nur aus reiner neugier, da ich vorher noch nie was mit Grafik in Delphi gemacht habe, jetzt bin ich dabei gerade mal in den Anfängen nämlich beim Laden und öffnen eines Bildes in der PaintBox, klappt auch soweit, habe das wie folgt gemacht:

Delphi-Quellcode:
procedure Tfrmpaintmaster.ffnen1Click(Sender: TObject);
var
Bild:TBitmap;
begin
if OpenPictureDialog.execute then
  begin
  Bild := TBitmap.Create;
  Bild.LoadFromFile (OpenPictureDialog.FileName);
    with PaintBox do
      begin
      Canvas.Draw(0,0,Bild);
      PaintBox.Width := Bild.Width;
      PaintBox.Height := Bild.Height;
      end;
  end;
end;
Mein Problem ist jetzt das wenn ich sage Öffnen und ich das Bild aussuche dann sehe ich das Bild noch nicht, also es wird nicht angezeigt, sondern erst wenn ich es zum zweitenmal öffne, dann sehe ich es wie es sein soll.
Habe es schon mit Refresh probiert, aber das klappt auch nicht.

Maine Frage jetzt was mache ich falsch oder habe ich was vergessen ?

Gruss
Darkchild

mkinzler 8. Jan 2007 20:22

Re: Kurze Frage zur PaintBox
 
Du solltest villeicht erst die Größe setzen, bevor du das Bild auf den Canvas Zeichnen läßt.

Darkchild 8. Jan 2007 20:25

Re: Kurze Frage zur PaintBox
 
Hi,

das hatte ich auch schon, also in der Form:

Delphi-Quellcode:
procedure Tfrmpaintmaster.ffnen1Click(Sender: TObject);
var
Bild:TBitmap;
begin
if OpenPictureDialog.execute then
  begin
  Bild := TBitmap.Create;
  Bild.LoadFromFile (OpenPictureDialog.FileName);
    with PaintBox do
      begin
      PaintBox.Width := Bild.Width;
      PaintBox.Height := Bild.Height;
      Canvas.Draw(0,0,Bild);
      end;
  end;
end;
Aber dann Flasht das Bild nur kurz auf und ist dann nicht mehr zu sehen.
Also auch erst beim 2ten mal.

Gruss
Darkchild

mkinzler 8. Jan 2007 20:31

Re: Kurze Frage zur PaintBox
 
Verlagere den Code mal in die Paint-Methode oder in die Methode der onPaint-Property

Darkchild 8. Jan 2007 21:01

Re: Kurze Frage zur PaintBox
 
Habe das jetzt etwas anders:


Delphi-Quellcode:
procedure Tfrmpaintmaster.ffnen1Click(Sender: TObject);
begin
if OpenPictureDialog.execute then
  begin
  Bild := TBitmap.Create;
  Bild.LoadFromFile (OpenPictureDialog.FileName);
  with PaintBox do
      begin
      PaintBox.Width := Bild.Width;
      PaintBox.Height := Bild.Height;
      end;
  end;
end;

procedure Tfrmpaintmaster.PaintBoxPaint(Sender: TObject);
begin
Canvas.Draw(0,0,Bild);
end;
Damit scheint es jetzt zu funktionieren.

Danke nochmals.

Gruss
Darkchild

inherited 8. Jan 2007 21:46

Re: Kurze Frage zur PaintBox
 
Vergiss nicht, Bild irgendwann wieder freizugeben ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:52 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