Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Image löschen/überschreiben (https://www.delphipraxis.net/110760-image-loeschen-ueberschreiben.html)

TomTe 24. Mär 2008 13:06


Image löschen/überschreiben
 
Hallo,

habe folgenes Problem, ich zeiche ein Image auf die Form mit folgenem Code:

Code:
var Image:TImage;
begin
    for x:=1 to anzahl do begin
      for y:=1 to anzahl do begin
        Image := TImage.Create(self);
        Image.Parent := Form1;
        Image.Left := 200;
        Image.Top := 500;
        Image.Picture.LoadFromFile('logo.bmp')
      end;
    end;
end;

Nun muss ich später bei einem Klick auf einen Button das Bild überschreiben, sodass ein anderes vorne ist..
Ich hab zeurst den selben Quellcode genommen, nur das Bild geändert..
Allerdings bekomm ich dann bei mehreren Klicken auf den Button so ein Flackern und man sieht die "älteren" Bilder, was denke ich daher kommt, dass die alten Bilder nicht überschrieben werden.

Wie kann ich dieses Problem nun lösen, sodass kein Flackern mehr vorhanden ist?

Gruß
TomTe

mkinzler 24. Mär 2008 13:11

Re: Image löschen/überschreiben
 
Du erzeugst ja jedesmal eine Image-Komponente

DeddyH 24. Mär 2008 13:12

Re: Image löschen/überschreiben
 
Anstatt x Images übereinander zu legen, könntest Du auch eine TImageList verwenden.

P.S.: Willkommen in der DP :dp:

TomTe 24. Mär 2008 14:21

Re: Image löschen/überschreiben
 
Zitat:

Zitat von mkinzler
Du erzeugst ja jedesmal eine Image-Komponente


kann ich das irgendwie anders machen?
Mit dem ImageList hab ich das Problem, da ich 20 verschiedene Bilder habe und diese sich auf verschiedene Ereignisse unterschiedlich verändern sollen.

Klaus01 24. Mär 2008 14:26

Re: Image löschen/überschreiben
 
Vielleicht so?

Delphi-Quellcode:
var Image:TImage;
begin
  Image := TImage.Create(self);
  Image.Parent := Form1;
  Image.Left := 200;
  Image.Top := 500;
  for x:=1 to anzahl do begin
    for y:=1 to anzahl do begin
      Image.Picture.LoadFromFile('logo.bmp')
    end;
  end;
end;
Grüße
Klaus

TomTe 24. Mär 2008 15:22

Re: Image löschen/überschreiben
 
Funktioniert nicht, der lädt immer das selbe...

Ich kann den da erstellten Grafiken ja nen Namen geben mit Image.Name.
Wie kann ich denn dann darauf zugreifen? Oder geht das garnicht?

dajuhsa 24. Mär 2008 16:09

Re: Image löschen/überschreiben
 
ich weiß ja nicht, was genau du bezwecken willst, aber wie wäre es, wenn du erst prüfst, ob das Image schon erstellt wurde und, wenn ja, dann lädst du einfach nur ein neues Bild rein anstatt gleich ein neues zu erstellen, also
Delphi-Quellcode:
var Image:TImage;
begin
  for x:= 1 to anzahl do
   for y:= 1 to anzahl do begin
    if Image<>nil then
      Image.Picture.LoadFromFile('logo.bmp')//wenn du unbedingt neu erstellen willst,schreib hier nur: Image.Free;
    else begin                             //und lasse die Zeile weg
      Image := TImage.Create(self);
      try
        Image.Parent := Form1;
        Image.Left := 200;
        Image.Top := 500;
        Image.Picture.LoadFromFile('logo.bmp')
      except
        Image.Free;
        showmessage('Fehler beim bearbeiten von Image!')
    end;                                   //und diese ebenfalls;
  end;
end;
ich hoffe , das war halbwegs richtig :roll: und hilfreich

Klaus01 24. Mär 2008 16:11

Re: Image löschen/überschreiben
 
Hallo,

bevor ich hier weiter rätsel, was willst Du überhaubt machen?

In der Schleife zeigst Du anzahl*anzahl das gleiche Bild dar.
In Deinem Post schreibst Du Du willst ein Bild laden und dann überschreiben.

Das würde im Prinzip so gehen:

var Image:TImage;
begin
Image := TImage.Create(self);
Image.Parent := Form1;
Image.Left := 200;
Image.Top := 500;
Image.Picture.LoadFromFile('logo.bmp')
end;

Im Buttonclick kannst Du so ein anderes Bild laden:
Delphi-Quellcode:
  Image.Picture.LoadFromFile('anderesBild.bmp');
Deine ImageNamen kannst Du zum Beispiel in einer StringList sammeln.
Dann könntest Du ein anderes Bild so laden:
Delphi-Quellcode:
  Image.Picture.LoadFromFile(sl[index]);
Grüße
Klaus


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:23 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