Autor Beitrag
kampfkoloss23
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 96



BeitragVerfasst: So 29.12.02 16:26 
Ich hab ein kleines Spiel programmiert, bei dem man sich mit dem Rechner ein Gefecht mit kleinen Raumschiffen liefert.

Dabei wird 50 mal pro sec (timer interval auf 20 ) alles errechnet und einzeln so ca 20 kleine Bitmaps und bis zu 200 einzelne Pixel auf den
Bildschirm gesetzt.

Ich hab nen 450 mhz Rechner und dass läuft gerade noch flüssig.
Gibt es eine bessere Methode?

Ist vielleicht eine Imagelist schneller??

In der eigenen Delphi Hilfe wird selbst gesagt, dass dies keine gute Methode ist, um den Bildschirm auszufüllen.

so ist der Aufruf des Bitmap gemacht gemacht:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
Bitmap1 := TBitmap.Create;
  try
    Bitmap1.LoadFromFile('Mine.bmp');
    image1.Canvas.Brush.Bitmap := Bitmap1;
    image1.canvas.draw(round(Mine[it].x),round(Mine[it].y),Bitmap1);
  finally
    image1.Canvas.Brush.Bitmap := nil;
    Bitmap1.Free;
  end;


(30.12. 10:36 Tino) Code-Tags hinzugefügt.
Jack Falworth
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 222

Win XP Pro, Slackware 10.0
D5 Enterprise, C++, ABAP
BeitragVerfasst: Mo 30.12.02 00:56 
Du solltest vielleicht nicht unbedingt 50 mal in der Sekunde ein Bitmap kreieren und das Minenbild von der Datei laden. Einmal genügt eigentlich. Das dürfte schon mal einiges an Rechenleistung sparen.

MfG

Jack Falworth
M. Raab
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 334
Erhaltene Danke: 1

WIN 7
Delphi XE
BeitragVerfasst: Mo 30.12.02 13:25 
Hallo Jack,

eine Methode um das zu verbessern ist:

Normalerweise sollte ein einmaliges Laden reichen. Wennes aber auf Grund Deines Programms nicht möglich ist, lade Dein Bild 1x in eine Variabel, z.B. BITMAP2 und kopiere es dann in BITMAP1.

Ein anderer Tipp ist die DOUBLEBUFFERED Eigenschaft Deines Forms. Damit passiert der Aufbau im Hintergrund und wird dann rüber kopiert.

Gruß


Markus
Popov
Gast
Erhaltene Danke: 1



BeitragVerfasst: Mo 30.12.02 14:50 
Zum Thema Laden und Speicher. Sowas kann je System zwischen 100 und 200 ms dauern.
kampfkoloss23 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 96



BeitragVerfasst: Mo 30.12.02 17:12 
danke :lol: :lol:
probiers gleich aus
kampfkoloss23 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 96



BeitragVerfasst: Mo 30.12.02 17:53 
braucht man eigentlich das try und finally?
Für was sollen die denn hier gut sein?
Jack Falworth
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 222

Win XP Pro, Slackware 10.0
D5 Enterprise, C++, ABAP
BeitragVerfasst: Mo 30.12.02 20:25 
Try steht da, falls das Laden der Datei schief geht (z.B. wenn die datei gelöscht wurde), damit es keine Fehlermeldung gibt.

Wenn du noch eine try - except anweisung einbaust kannst du die Delphi Fehlermeldung abfangen und beispielsweise deine eigene Fehlermeldung einbauen.

MfG

Jack Falworth

_________________
Andere zu kritisieren ist mitunter eine Möglichkeit, sich selbst ins bessere Licht zu setzen.