AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Bilddateien auf Vorrat laden für spätere Darstellung in TBitmap
Thema durchsuchen
Ansicht
Themen-Optionen

Bilddateien auf Vorrat laden für spätere Darstellung in TBitmap

Ein Thema von mcmichael · begonnen am 14. Sep 2019 · letzter Beitrag vom 16. Sep 2019
 
Benutzerbild von mcmichael
mcmichael

Registriert seit: 5. Jun 2008
Ort: Bremen
79 Beiträge
 
Delphi 10.1 Berlin Professional
 
#1

Bilddateien auf Vorrat laden für spätere Darstellung in TBitmap

  Alt 14. Sep 2019, 16:35
Hallo liebe Experten,

ich schreibe eine VCL-Anwendung bei der TImages auf dem Form liegen und die
zur Laufzeit Bilddateien (bmp,jpg) nachladen. Beim Laden (Image1.picture.loadfromfile) kommt es leider gelegentlich zu
kleinen Hängern (z.B. stockt die akustische Ausgabe). Deshalb überlege ich, die Dateien zum Start des Programms in ein Array von TBitmaps
zu laden und die dann bei Bedarf über Assign in dem TImage darzustellen.
Dabei stosse ich aber laufend auf Probleme. Ich bin mit TImage und TBitmap nicht besonders versiert und kriege die
Dateien weder geladen und natürlich auch nicht dargestellt...

Erste Frage: Haltet ihr das für eine zielführende Möglichkeit um das Ruckeln zur Laufzeit loszuwerden?

Zweite: Was mache in den Prozeduren preloadImage und showImage falsch?
Übergeben wird der Dateiname in fname und das TImage.Picture.Bitmap welches auf der Form liegt.



Delphi-Quellcode:
var IC:Array [1..100] of TBitmap;
    icname:Array [1..100] of string;
    icmax:integer;




procedure preloadImage(fname:string);
var i,z:integer;
begin
if preload then
  begin
  //doubletten vermeiden
  z:=0;
  for i := 1 to icmax do
    if icname[i]=fname then
      begin
      z:=0;
      break;
      end;
  if z=0 then
    begin
    inc(icmax);
    IC[icmax]:=TBitmap.Create;
    IC[icmax].LoadFromFile(Folder_Images+fname);
    icname[icmax]:=fname;
    end;
  end;
end;


procedure showImage(t:TImage;fname:string);
var i,z:integer;
begin
if preload then
  begin
  z:=0;
  for i := 1 to icmax do
    if icname[i]=fname then
      begin
      z:=0;
      break;
      end;
  if z>0 then
    t.Picture.Bitmap.Assign(IC[z]);
  end
else
  begin
 //hier nur den regulären loadfromfile durchführen
  end;
end;
  Mit Zitat antworten Zitat
 


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 17:39 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