Autor Beitrag
carrat
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Sa 12.03.05 16:53 
kann mir einer erklären wie ich per buttonklick ein neues bil in einen TImage-Objekt lade?
IngoD7
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 629


D7
BeitragVerfasst: Sa 12.03.05 21:21 
Was ist das Problem - der ButtonClick oder das Laden des Bildes?
Was verstehst du unter "Laden"? Das Einlesen einer Bilddatei?

Beschreibe dein Problem genauer.
maxk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1696
Erhaltene Danke: 1

Win XP, Debian Lenny
Delphi 6 Personal
BeitragVerfasst: Sa 12.03.05 21:23 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
procedure TForm1.Button1Click(Sender: TObject);
begin
 Image1.Picture.LoadFromFile('C:\Datei.bmp');
end;

_________________
Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.
carrat Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: So 13.03.05 01:52 
DANKE!!!!
Mike_C
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 207

Win XP
D7 Enterprise
BeitragVerfasst: So 13.03.05 13:04 
user profile iconmaxk hat folgendes geschrieben:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
procedure TForm1.Button1Click(Sender: TObject);
begin
 Image1.Picture.LoadFromFile('C:\Datei.bmp');
end;


besserer Vorschlag:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
var bmp: TBitmap;
begin
  bmp := TBitmap.Create;
  bmp.LoadFromFile('C:\datei.bmp');
  Image1.Height := bmp.Height;
  Image1.Width := bmp.Width;
  Image1.Canvas.Draw(0,0,bmp);
  bmp.Free;
end;

Vorteil: wenn du mehrere Bilder lädst, verschwendest du nicht so viel Speicher!

Gruß MikeC

_________________
Life is, what some people call a mystery. To me life's just a lesson, you're learning when you're through. So why do we try to understand?
wdbee
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 628
Erhaltene Danke: 1



BeitragVerfasst: So 13.03.05 13:43 
@Mike_C: Worin besteht denn deiner Meinung nach die Einsparung?

Vergleich doch mal das Verhalten von TPaintbox und TImage, wenn du das so machst. Bei TImage bleibt das Bild erhalten, wenn es mal verdeckt wurde, bei TPaintbox nicht. Das heißt doch aber, dass TImage das Bild speichert und TPaintbox nicht. Also wird deshalb nichts gespart!
AXMD
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: So 13.03.05 14:27 
user profile iconwdbee hat folgendes geschrieben:
@Mike_C: Worin besteht denn deiner Meinung nach die Einsparung?

Vergleich doch mal das Verhalten von TPaintbox und TImage, wenn du das so machst. Bei TImage bleibt das Bild erhalten, wenn es mal verdeckt wurde, bei TPaintbox nicht. Das heißt doch aber, dass TImage das Bild speichert und TPaintbox nicht. Also wird deshalb nichts gespart!


Nimm doch gleich BitBlt oder schreib TCanvas neu, Mike_C :roll:

AXMD
Mike_C
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 207

Win XP
D7 Enterprise
BeitragVerfasst: So 13.03.05 15:48 
user profile iconwdbee hat folgendes geschrieben:
@Mike_C: Worin besteht denn deiner Meinung nach die Einsparung?

Vergleich doch mal das Verhalten von TPaintbox und TImage, wenn du das so machst. Bei TImage bleibt das Bild erhalten, wenn es mal verdeckt wurde, bei TPaintbox nicht. Das heißt doch aber, dass TImage das Bild speichert und TPaintbox nicht. Also wird deshalb nichts gespart!


Der Punkt ist der: wie du richtig sagst, wird von TImage das Bild gespeichert: es hängt also letztendlich im Speicher! wenn du nun mehrere große Bilder (Größen ab 800x600 und größer) mit Picture.LoadFromFile lädst, wird das eine menge speicher unnötig verschwenden. wenn du aber den Weg über die Bitmap nimmst, malst du nur auf den Canvas und gibst den belegten speicher wieder frei! klar, du brauchst eine extra Update-Routine für deine Bilder. Dein Punkt gilt meiner Meinung nach nur für den Fall, wenn du das Bild direkt in Picture reinlädst und den Canvas nicht bemalst.



user profile iconAXMD hat folgendes geschrieben:


Nimm doch gleich BitBlt oder schreib TCanvas neu, Mike_C :roll:

AXMD

warum denn den Canvas neu schreiben? Sorry, aber deinen Kommentar verstehe ich nicht. Ich erfinde doch jetzt wirklich nicht das Rad neu!

_________________
Life is, what some people call a mystery. To me life's just a lesson, you're learning when you're through. So why do we try to understand?