AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi TimageList.getImage zu langsam
Thema durchsuchen
Ansicht
Themen-Optionen

TimageList.getImage zu langsam

Ein Thema von BR146 · begonnen am 26. Aug 2012 · letzter Beitrag vom 26. Aug 2012
Antwort Antwort
BR146

Registriert seit: 21. Mär 2012
2 Beiträge
 
Delphi 6 Personal
 
#1

TimageList.getImage zu langsam

  Alt 26. Aug 2012, 16:24
Hallo zusammen!

Ich möchte eine Paintbox mit Icons (50px*50px) füllen. Das ganze bildet eine Art "Raster" mit 40*20 Feldern.
Wenn ich jetzt aber die Procedure aufrufe, so dauert es fast eine ganze Sekunde, bis die Paintbox fertig geupdated ist.
Kommentiere ich jetzt die Zeile mit icons.GetBitmap(2,bmp); aus, dann wird die Paintbox in null-komma-nix gezeichnet...

Merkbar ist's vor allem an den Testweise eingefügten Messages. Mit der Zeile: ca. 1s - Ohne Zeile: kaum merkbare Zeit zwischen den Messages.
Daher vermute ich, dass es wohl an der Imagelist liegt. Kann mir jemand ein Tipp geben, wie ich das Problem lösen kann?
Die Zeit ist nicht tragbar, da durch Userinteraktion sich das Rsater ändert und ne gezeichnet werden muss...

Danke schonmal!
Adrian

Delphi-Quellcode:
procedure TmainFormular.Draw;
var X, Y: integer;
    bmp: Tbitmap;
    zwp: TPicture;
begin
   showmessage('Start');
   zwp := TPicture.Create;
   zwp.Bitmap.Width := 50*40;
   zwp.Bitmap.Height := 50*20;
   
   for X:=0 to 40 do begin
      for Y:=0 to 20 do begin

         bmp := Tbitmap.Create;

         icons.GetBitmap(2,bmp);
         //^^ Hier ist meine Problemzeile
         
         zwp.Bitmap.Canvas.Draw(x*50,y*50,bmp);
         bmp.Free;
      end;
   end;

   Paintbox1.Canvas.Draw(0,0,zwp.Graphic);
   zwp.Free;
   showmessage('Ende');
end;
(Prozedur ist auf das nötigste gekürzt worden. So habe ich es auch getestet...)
Adrian
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#2

AW: TimageList.getImage zu langsam

  Alt 26. Aug 2012, 16:38
Hallo,

warum verwendest Du nicht Delphi-Referenz durchsuchenTImageList.Draw? Momentan erzeugst Du für jedes Bild ein temporäres Bitmap-Objekt, malst da rein und malst das denn erst aufs Ziel. Das kostet natürlich.
Außerdem sind Deine Schleifen immer einen Durchlauf zu lang (0 bis 40 sind 41 Elemente).

Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
BR146

Registriert seit: 21. Mär 2012
2 Beiträge
 
Delphi 6 Personal
 
#3

AW: TimageList.getImage zu langsam

  Alt 26. Aug 2012, 18:19
Momentan erzeugst Du für jedes Bild ein temporäres Bitmap-Objekt, malst da rein und malst das denn erst aufs Ziel.
Das hat auch seinen Grund: Ich muss die Icons z.T. noch drehen (in 90°-Schritten) bevor ich sie auf das "große" Mal.

Das ich es erst am schluss dann auf die Paintbox mal ist klar: sonst wirds jedes Mal neu gezeichnet...

Warum ich nicht Delphi-Referenz durchsuchenTImageList.Draw verwende? Keine Ahnung.

Und das meine Schleifen zu lang laufen ist mir noch garnet aufgefallen

Ich probiers mal aus. Danke!

---EDIT---

Ich hab's grad mal im richtigen Programm probiert. Ist subjektiv gleich schnell mit Delphi-Referenz durchsuchenTImageList.Draw wie mit Delphi-Referenz durchsuchenTImageList.getBitmap
Mein Flaschenhals ist jetzt die Drehroutine...

Thread hat sich erledigt!
Adrian

Geändert von BR146 (26. Aug 2012 um 19:04 Uhr) Grund: Falsche Einschätzung von "draw"
  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 06:28 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