AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi TBitmap - gaaanz viele - wie gehts schneller!?
Thema durchsuchen
Ansicht
Themen-Optionen

TBitmap - gaaanz viele - wie gehts schneller!?

Ein Thema von StefanDP · begonnen am 16. Apr 2004 · letzter Beitrag vom 16. Apr 2004
Antwort Antwort
StefanDP

Registriert seit: 11. Apr 2004
294 Beiträge
 
#1

TBitmap - gaaanz viele - wie gehts schneller!?

  Alt 16. Apr 2004, 02:54
Hi!

Ich bin gerade an Meinem "Snake-Clone" Projekt und habe eine Spielfläche von z.b. 25x15
jedes feld bekommt dann ein TImage (ansprechbar über imFeld[x,y])

zum erstellen des feldes
Code:
  for x := 1 to Spielfeld.Breite do
  begin
    for y := 1 to Spielfeld.Hoehe do
    begin
      imFeld[x,y] := TImage.Create(imFeld[x,y]);    // Konstruktor
      with imFeld[x,y] do
      begin
        Parent:= Form1;             //das Objekt gehört zu Form1
        ...
        case Spielfeld.Feld[x,y].Inhalt of
          0: Picture.Bitmap := bmpNichts;           // Bitmap zuweisen!
          1: Picture.Bitmap := bmpWand;
        end;
        Show;                                       // TImage anzeigen
      end;
    end;
gibt es da eine schnellere methode? z.b. die verwendung von jpges oder so?!
oder hab ich einen groben denkfehler

mfg
stefan

ach ja:
Code:
procedure TForm1.FormCreate(Sender: TObject);
begin
  bmpWand := TBitmap.Create;
  bmpWand.LoadFromFile('wand.bmp');
...
  Mit Zitat antworten Zitat
Jörn

Registriert seit: 5. Sep 2003
Ort: Helmstedt
312 Beiträge
 
#2

Re: TBitmap - gaaanz viele - wie gehts schneller!?

  Alt 16. Apr 2004, 03:57
Also jpgs würden zwar den Speicheraufwand auf der Festplatte reduzieren, aber keinen Geschwindigkeitsvorteil bringen, eher sogar nachteilig wirken. Schließlich wird intern immer noch mit einem Bitmap gearbeitet, doch muss das jpg-Bild erst in ein Bitmap konvertiert werden.
Aber mir würde ad hoc nichts einfallen, was den Vorgang beschleunigen könnte.
Obwohl ich eher dazu tendieren würde, eine einzelne Paintbox nehmen würde. Im Hintergrund zeichnet man einfach alles auf ein Bitmap und weist der Paintbox dieses bei jeder Veränderung und dem OnPaint-Ereigniss zu. Der Programmstart wäre auf jeden Fall schneller, und ich denke der Ablauf auch, obwohl da eher nicht spürbar. Hätte außerdem den Vorteil, das diese Zeichentechnik der von DirectDraw/OpenGL im orthogonalen Modus entspricht, und wenn man mal darauf umsteigen möchte, fällt dies natürlich leichter.

MfG
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.168 Beiträge
 
Delphi 12 Athens
 
#3

Re: TBitmap - gaaanz viele - wie gehts schneller!?

  Alt 16. Apr 2004, 06:00
Du kannst auch nur ein BitMap verwenden und dann die vielen kleinen BitMap's dort reinzeichnen...
schau z.B. mal in den Schachthread, da ist auch jemand mit dieser Frage der Darstellungsart beschäftigt ist.

Delphi-Quellcode:
// z.B. wenn die kleinen BitMap's eine Größe von 20x20 Pixel haben.
for x := 1 to Spielfeld.Breite do
  for y := 1 to Spielfeld.Hoehe do
    case Spielfeld.Feld[x,y].Inhalt of
      0: Image1.Canvas.Draw(X * 20, Y * 20, bmpNichts);
      1: Image1.Canvas.Draw(X * 20, Y * 20, bmpWand);
    end;
[EDIT]
Delphi-Tags vergessen
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Jörn

Registriert seit: 5. Sep 2003
Ort: Helmstedt
312 Beiträge
 
#4

Re: TBitmap - gaaanz viele - wie gehts schneller!?

  Alt 16. Apr 2004, 06:25
Hab ich nicht schon so was ausgedrückt oder schiele ich? Sollte ich doch langsam ins Bett?!?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.168 Beiträge
 
Delphi 12 Athens
 
#5

Re: TBitmap - gaaanz viele - wie gehts schneller!?

  Alt 16. Apr 2004, 06:39
Wo ich das jetzt nochmal lese ... auch endlich mal schlafen sollte -.-
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
StefanDP

Registriert seit: 11. Apr 2004
294 Beiträge
 
#6

Re: TBitmap - gaaanz viele - wie gehts schneller!?

  Alt 16. Apr 2004, 09:57
PaintBox klappt perfekt!
Thx @ all
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.168 Beiträge
 
Delphi 12 Athens
 
#7

Re: TBitmap - gaaanz viele - wie gehts schneller!?

  Alt 16. Apr 2004, 10:00
Vergiss aber nicht, das die PaintBox das Bild nicht speichert, wenn also mal ein Teil von dem darauf befindlichen Bild übermalt wird, dann ist es auch weg und dü müßtest das Bild, oder zumindestens den Bildteil neu zeichnen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

Re: TBitmap - gaaanz viele - wie gehts schneller!?

  Alt 16. Apr 2004, 10:01
Zu dem Problem, sieh hier: http://www.luckie-online.de/Ablage/D...eenBitmap.html
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.168 Beiträge
 
Delphi 12 Athens
 
#9

Re: TBitmap - gaaanz viele - wie gehts schneller!?

  Alt 16. Apr 2004, 10:06
[OT]
Zitat:
Code:
{ Hintergrundfarbe [color=red]ú[/color]nd Stif[color=red]t d[/color]icke }
{ Hintergrundfarbe und Stiftdicke }
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
StefanDP

Registriert seit: 11. Apr 2004
294 Beiträge
 
#10

Re: TBitmap - gaaanz viele - wie gehts schneller!?

  Alt 16. Apr 2004, 11:23
Zitat von Luckie:
ich lasse im falle von paintbox.onpaint einfach die grafik komplett neu zeichnen

mfg
stefan

aber danke für den tipp
  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 15:10 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