Einzelnen Beitrag anzeigen

ichbins

Registriert seit: 9. Jul 2005
Ort: Hohenaltheim
1.001 Beiträge
 
Delphi 2005 Personal
 
#8

Re: Das gleiche Bild in 576 Images laden!

  Alt 16. Apr 2006, 22:02
So solltest du es besser machen:

Erst lädtst du jede Datei in eine tbitmap-Variable. Diese Bitmaps fasst du in einem Array zusammen:

Delphi-Quellcode:
var
  bilder:array[0..1000] of tbitmap;
  i:integer;
const
  dateinamen:array[0..1000] of string = ('c:\bildnummer1.bmp','c:\bildnummer2.bmp',...);
begin
  for i:=0 to 1000 do begin
    bilder[i]:=tbitmap.create;
    bilder[i].loadfromfile(dateinamen[i]);
  end;
end;
Dann machst du EIN TImage.

Für dieses TImage schreibst du eine Procedure DISPLAY. Die rufst du auf wenn ein Feld verändert wurde oder die Anzeige aktualisiert werden soll:

Delphi-Quellcode:
procedure DISPLAY;
var
  i,j:integer;
  newdisplay:tbitmap;
begin
  newdisplay:=tbitmap.create;

  jetzt mit i und j alle 500 Felder aus dem Bitmap-Array auf das Image kopieren

  image1.canvas.draw(newdisplay); //Auf das Image die Zusammenstellung des neuen Displays kopieren; Image1.Doublebuffered sollte true sein um flackern zu vermeiden
  newdisplay.free;
end;
Wenn auf das Image geklickt wurde kannst du ja aus den Mauskoordinaten genau den Klickpunkt berechnen:
Delphi-Quellcode:
prcedure tform1.image1click(x,y:integer);
var
  KLICKFELDX,KLICKFELDY:integer;
begin
  klickfeldx:=x div 12;
  klickfeldy:=y div 12; //eventuell muss dies noch verändert werden, da jetzt der niedrigstmögliche Wert eine 0 ist -> +1 dazuschreiben wenn du den Wert erhöhen willst. Außerdem könnte es sein dass der Wert nicht von den Koordinaten des Image abhängt sondern von denen der Form, dann musst du von x noch image1.left und von y image1.top abziehen (das sieht dann so aus: klickfeldx:=(x-image1.left) div 12;
end;
Michael Enßlin
Ich, der ich weiß, mir einzubilden, dass ich weiß, nichts zu wissen, weiß, dass ich nichts weiß.
Sokrates
  Mit Zitat antworten Zitat