JPG-Bild in Form anzeigen

Für Probleme bezüglich Grafik, Audio, GL, ACS, ...

JPG-Bild in Form anzeigen

Beitragvon Fraenzken » 6. Mär 2016, 09:27 JPG-Bild in Form anzeigen

Hallo,

ich versuche momentan, ein JPG-Bild zu skalieren und in einem Form anzeigen zu lassen. Das funktioniert auch problemlos, wenn ich die Skalierung per Button anstoße:

Code: Alles auswählen
procedure TForm1.Button1Click(Sender: TObject);
var
  Pic : TPicture;
begin
  Pic:= TPicture.Create;
  try
    Pic.LoadFromFile(ParamStr (1));
    Self.Canvas.StretchDraw(Rect(0,
                                 0,
                                 Pic.Width div 4,
                                 Pic.Height div 4),
                            Pic.Bitmap);
  finally
    Pic.Free;
  end;
end;


Wenn ich stattdessen aber ein neues Form öffne und das Bild dort anzeigen möchte, klappt es nicht:

Code: Alles auswählen
procedure TForm1.Button1Click(Sender: TObject);
var
  Pic : TPicture;
begin
  Pic:= TPicture.Create;
  try
    Pic.LoadFromFile(ParamStr (1));
    Form2.Canvas.StretchDraw(Rect(0,
                                 0,
                                 Pic.Width div 4,
                                 Pic.Height div 4),
                            Pic.Bitmap);
    Form2.ShowModal;
  finally
    Pic.Free;
  end;
end;     
 


Könnt ihr mir sagen, woran das liegt?
Fraenzken
 
Beiträge: 24
Registriert: 10. Feb 2016, 10:30

Beitragvon theo » 6. Mär 2016, 10:39 Re: JPG-Bild in Form anzeigen

Auf einen (flüchtigen) Canvas darf man nur im OnPaint Ereignis zeichnen.
Bei ShowModal hat der das schon "vergessen".
theo
 
Beiträge: 8046
Registriert: 11. Sep 2006, 18:01

Beitragvon Mathias » 6. Mär 2016, 17:01 Re: JPG-Bild in Form anzeigen

Idealerweise sieht dies dann so aus:

Code: Alles auswählen
var
  Pic: TPicture;
 
{ TForm2 }
 
procedure TForm2.FormCreate(Sender: TObject);
begin
  Pic := TPicture.Create;
  Pic.LoadFromFile('project1.ico');
//  Pic.LoadFromFile(ParamStr(1));
end;
 
procedure TForm2.FormDestroy(Sender: TObject);
begin
  Pic.Free;
end;
 
procedure TForm2.FormPaint(Sender: TObject);
begin
  Canvas.StretchDraw(Rect(0,
    0,
    Pic.Width div 4,
    Pic.Height div 4),
    Pic.Bitmap);
end


Es bringt nichts, im OnPaint die die Picture jedesmal neu zu laden.
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 3993
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

Beitragvon Fraenzken » 8. Mär 2016, 21:13 Re: JPG-Bild in Form anzeigen

Danke, hat perfekt geklappt!
Fraenzken
 
Beiträge: 24
Registriert: 10. Feb 2016, 10:30

• Themenende •

Zurück zu Multimedia



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste

porpoises-institution
accuracy-worried