Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi bitmap zeug (https://www.delphipraxis.net/71235-bitmap-zeug.html)

Langa 11. Jun 2006 18:33


bitmap zeug
 
Hallo zusammen soll bis morgen nen Quelltext komentieren und komm auch gut voran

Hab mal ne frage wozu brauch ich bei 2 bitmaps

Delphi-Quellcode:
procedure tform1.formcreate
begin
bitmap1.free;
bitmap2.free;
end;

Nils_13 11. Jun 2006 18:40

Re: bitmap zeug
 
Hi,

wenn du ein TBitmap erstellst, wird es "in den Speicher geführt". Wenn der Free-Befehl weggelassen wird, bleibt das TBitmap trotz z.B. schließen des Programmes im Speicher. Wenn du die Anwendung dann mehrfach gestartet hast, wird dein Computer im Laufe der Zeit immer langsamer, da dann alle TBitmaps immer noch im Speicher sind.

HuxXx 11. Jun 2006 18:42

Re: bitmap zeug
 
mit "Free" gibst du den Speicher frei, den das Object Bitmap verwendet hat.

// Edit: aahh..., zu spät...

Langa 11. Jun 2006 18:45

Re: bitmap zeug
 
und
Delphi-Quellcode:
 Doublebuffered := True;
um sie überlagern zu können

nehm ich an und wo zu macht der dann

Delphi-Quellcode:
  bitmap1.PixelFormat := pf8bit;

monta 11. Jun 2006 18:48

Re: bitmap zeug
 
free dürfte ja nun geklärt sein.

Aber ich find es ein bisschen verwirrend, wieso das Bitmap beim (zumindest nach Prozedurnamen) Formcreate freigegeben wird und nicht bei FormDestroy oder Formclose oder so.
Macht das Sinn? :gruebel:

Langa 11. Jun 2006 18:50

Re: bitmap zeug
 
oh hat ich mich vertiptt steht natürlich auch bei destroy drin :oops:

monta 11. Jun 2006 18:54

Re: bitmap zeug
 
^^achso :wink:

DoubleBuffered :=true dient eigentlich dazu, die Grafikausgabe nochmals zu Buffern, damit siebei Bewegungen oder so (wenn man Beispielsweise ein Image auf der Form verschiebt) nicht flakert, sondern möglichst flüssig dargestellt wird.

bitmap1.PixelFormat := pf8bit;
Sagt mir auf anhieb nichts, da dort aber 8bit stahet, wirde ich mal sagen, es bezieht sich auf die Farbtiefe, du setzt also Pixel mit 8Bit Fartiefe, also 256Farben.

//Die OH sagt dazu: Die Eigenschaft PixelFormat legt fest, in welchem Bit-Format das Bitmap-Bild angezeigt wird.

Langa 11. Jun 2006 18:55

Re: bitmap zeug
 
hm falcker tut es bei mir wie sau wenn ich den timer starte

Khabarakh 11. Jun 2006 18:56

Re: bitmap zeug
 
Zitat:

Zitat von Nils_13
Wenn der Free-Befehl weggelassen wird, bleibt das TBitmap trotz z.B. schließen des Programmes im Speicher.

Nicht wirklich.
Speicherleck

monta 11. Jun 2006 19:00

Re: bitmap zeug
 
Zitat:

Zitat von Langa
hm falcker tut es bei mir wie sau wenn ich den timer starte

seltsam, eigentlich sollte das durch DoubleBuffered verringert oder ausgeschaltet werden, kann natürlich sein, das es für die Anwendung einfach nicht ausreicht. Kenn mich nicht genau damit aus, weils das bei D3 nicht gibt, aber gibts nicht DoubleBuffered bei mehreren Komponeten einschließlich TForm? Mit anderen Worten, wäre die Frage, welches DoubleBuffered aktiviert wird.

Langa 11. Jun 2006 19:04

Re: bitmap zeug
 
wird bei
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  Doublebuffered := True;
aktiviert

monta 11. Jun 2006 19:11

Re: bitmap zeug
 
Zitat:

Zitat von Langa
wird bei
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  Doublebuffered := True;
aktiviert

Dann sollte es wohl das der Form sein, keine Ahnung, wieso es dann immernoch flackert, wahrscheinlich langt es halt einfach nicht aus, weil zuviel bewegt wird oder so. Es kann natürlich auch scheinbar flackern, weil einfach zu wenige Bilder pro Sekunde generiert wedren oder so, weis ja nicht, was das Programm eigentlich macht.

Nils_13 11. Jun 2006 19:23

Re: bitmap zeug
 
@Khabarakh: Jo bist im Recht, aber worum es bei free geht sollte trotzdem klar sein.

turboPASCAL 11. Jun 2006 21:38

Re: bitmap zeug
 
Zitat:

Zitat von monta
[...] keine Ahnung, wieso es dann immernoch flackert, [...] weis ja nicht, was das Programm eigentlich macht.

Dann zeigst du mal etwas vom Code und dir kann bestimmt weiter geholfen werden.

Zitat:

Zitat von Langa
Delphi-Quellcode:
procedure tform1.formcreate
begin
  bitmap1.free;
  bitmap2.free;
end;

Beim ertellen der Form schon Bitmaps freigeben ? Im Normalfall kömmt so etwas in FormDestroy oder nachdem das bzw. die Bitmaps nicht mehr gebraucht werden.

monta 11. Jun 2006 21:50

Re: bitmap zeug
 
Zitat:

Zitat von turboPASCAL
Zitat:

Zitat von Langa
Delphi-Quellcode:
procedure tform1.formcreate
begin
  bitmap1.free;
  bitmap2.free;
end;

Beim ertellen der Form schon Bitmaps freigeben ? Im Normalfall kömmt so etwas in FormDestroy oder nachdem das bzw. die Bitmaps nicht mehr gebraucht werden.

weiter oben stands :wink:
Zitat:

Zitat von Langa
oh hat ich mich vertiptt steht natürlich auch bei destroy drin :oops:


turboPASCAL 11. Jun 2006 21:55

Re: bitmap zeug
 
Hui, da hab ich wohl eine Leerzeile zu viel gelesen. Verflixt. :stupid:


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