AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Image löschen/überschreiben
Thema durchsuchen
Ansicht
Themen-Optionen

Image löschen/überschreiben

Ein Thema von TomTe · begonnen am 24. Mär 2008 · letzter Beitrag vom 24. Mär 2008
Antwort Antwort
TomTe

Registriert seit: 24. Mär 2008
3 Beiträge
 
#1

Image löschen/überschreiben

  Alt 24. Mär 2008, 13:06
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
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Image löschen/überschreiben

  Alt 24. Mär 2008, 13:11
Du erzeugst ja jedesmal eine Image-Komponente
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Image löschen/überschreiben

  Alt 24. Mär 2008, 13:12
Anstatt x Images übereinander zu legen, könntest Du auch eine TImageList verwenden.

P.S.: Willkommen in der DP
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
TomTe

Registriert seit: 24. Mär 2008
3 Beiträge
 
#4

Re: Image löschen/überschreiben

  Alt 24. Mär 2008, 14:21
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.
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.754 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Image löschen/überschreiben

  Alt 24. Mär 2008, 14:26
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
Klaus
  Mit Zitat antworten Zitat
TomTe

Registriert seit: 24. Mär 2008
3 Beiträge
 
#6

Re: Image löschen/überschreiben

  Alt 24. Mär 2008, 15:22
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?
  Mit Zitat antworten Zitat
Benutzerbild von dajuhsa
dajuhsa

Registriert seit: 20. Apr 2007
397 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Image löschen/überschreiben

  Alt 24. Mär 2008, 16:09
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 und hilfreich
das Essen ist wie das Internet - Downstream ist immer angenehmer als Upstream
-
Warum missbraucht die ganze Programmierwelt Images als Paintboxen
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.754 Beiträge
 
Delphi 10.4 Sydney
 
#8

Re: Image löschen/überschreiben

  Alt 24. Mär 2008, 16:11
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:
  Image.Picture.LoadFromFile('anderesBild.bmp'); Deine ImageNamen kannst Du zum Beispiel in einer StringList sammeln.
Dann könntest Du ein anderes Bild so laden:
  Image.Picture.LoadFromFile(sl[index]); Grüße
Klaus
Klaus
  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 18:07 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