AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

schneller Ersatz für timage

Ein Thema von R2009 · begonnen am 14. Apr 2009 · letzter Beitrag vom 14. Apr 2009
Antwort Antwort
R2009

Registriert seit: 9. Mär 2009
Ort: Heidelberg
440 Beiträge
 
Delphi 2007 Professional
 
#1

schneller Ersatz für timage

  Alt 14. Apr 2009, 09:38
Hallo DP'ler,

gibt es einen schnellen Ersatz für Timage? Ich muss ein Icon(bmp)-array auf einer Form darstellen.
Alles was ich eigentlich brauche ist eine Komponente in der eine Bitmap dargestellt werden kann und
das ich anklicken kann. Die unten angegebene Routine braucht für breite=38 und hoehe=28 ca 20sec.
timage_ext ist ein Nachfolger von timage mit 2 Integervariablen zusätzlich. Der Zeitbedarf zwischen
meiner Komponente und timage unterscheidet sich überhaupt nicht.

Delphi-Quellcode:
  setlength(bmdraw,breite,hoehe);
  for n := 0 to breite-1 do
    for m := 0 to hoehe-1 do
    begin
      bmdraw[n,m]:=timage_ext.create(self);
      bmdraw[n,m].Parent:=Form2;
      bmdraw[n,m].Picture.Bitmap.Width:=22;
      bmdraw[n,m].Picture.Bitmap.height:=22;
      bmdraw[n,m].Top:=2;
      Bm.Imagelist1.GetBitmap(0, bmdraw[n,m].Picture.Bitmap);
      bmdraw[n,m].Left:=n*23;
      bmdraw[n,m].top:=m*23;
      bmdraw[n,m].OnMouseDown:=FormMouseDown;
      bmdraw[n,m].ext_x:=n;
      bmdraw[n,m].ext_y:=m;
    end;
Vielen dank im Vorraus!
Rainer Unger
Mein Profil:
Studium Allgemeine Elektrotechnik TH Darmstadt
Entwicklung von Tools für die Rundsteuer und Zählertechnik.
uP's Atmel Prozessoren (ATmega16,32,88...) in C und Assembler.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: schneller Ersatz für timage

  Alt 14. Apr 2009, 09:48
Schau dir mal Graphics32 an
Markus Kinzler
  Mit Zitat antworten Zitat
R2009

Registriert seit: 9. Mär 2009
Ort: Heidelberg
440 Beiträge
 
Delphi 2007 Professional
 
#3

Re: schneller Ersatz für timage

  Alt 14. Apr 2009, 10:24
Hallo mkinzler,

danke für deinen Tip, habs ausprobiert ist eher noch langsamer.
Das Problem scheint die parent-Zuweisung zu sein.

Delphi-Quellcode:
  setlength(bmdraw,breite,hoehe);
  for n := 0 to breite-1 do
    for m := 0 to hoehe-1 do
    begin
      bmdraw[n,m]:=timage_ext.create(self);
      //bmdraw[n,m].Parent:=Gleisbild; //langsame Version
      bmdraw[n,m].Picture.Bitmap.Width:=22;
      bmdraw[n,m].Picture.Bitmap.height:=22;
      bmdraw[n,m].Top:=2;
      Bm.Schienen.GetBitmap(0, bmdraw[n,m].Picture.Bitmap);
      bmdraw[n,m].Left:=n*23;
      bmdraw[n,m].top:=m*23;
      bmdraw[n,m].OnMouseDown:=FormMouseDown;
      bmdraw[n,m].ext_x:=n;
      bmdraw[n,m].ext_y:=m;
      bmdraw[n,m].Parent:=Gleisbild; //schnelle Version
    end;
Ich habe die parent Anweisung ans Ende des Codes geschrieben und jetzt funktioniert das Ganz innerhalb von 1 sec.
Warum ist mir allerdings unklar. Kann es sein, dass die Bitmap danach (nach parent) bei jeder Änderung neu gezeichnet werden muss?

Vielen Dank!
Rainer Unger
Mein Profil:
Studium Allgemeine Elektrotechnik TH Darmstadt
Entwicklung von Tools für die Rundsteuer und Zählertechnik.
uP's Atmel Prozessoren (ATmega16,32,88...) in C und Assembler.
  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 03:56 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