Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Images flakern... :( (https://www.delphipraxis.net/102973-images-flakern.html)

halinchen 7. Nov 2007 19:00

Re: Images flakern... :(
 
Du fügst in der Form ein:

Delphi-Quellcode:
MeinBild : TBitmap;
OnCreate:
Delphi-Quellcode:
MeinBild := TBitmap.Create;
MeinBild.LoadFromFile('FileName');
OnDestroy:
Delphi-Quellcode:
MeinBild.Free

Entweder du bleibst bei deinen Images oder ich würde dir folgende Methode empfehlen:
Delphi-Quellcode:
Form.Canvas.Draw(X,Y,MeinBild)
Du müsstest jetzt den X und Y wert berechnen und dann zeichnest du.
vor dem Zeichnen solltest du
Delphi-Quellcode:
Form.Refresh
aufrufen.

Bei Images:
Delphi-Quellcode:
Image.Picture.Bitmap.Assign(MeinBild);

patti 7. Nov 2007 19:03

Re: Images flakern... :(
 
Wenn es sich um viele "Schneeflocken" handelt, würde ich diese in der Zeichen-Routine zunächst auf ein neu erzeugtes Bitmap zeichnen und dieses wiederum auf das Canvas zeichnen. Sollte die ganze Geshcichte noch etwas "ruckelfreier" machen.

Lifthrasir 7. Nov 2007 19:05

Re: Images flakern... :(
 
hmm.. ich werd das mal versuchen..

Vielen Dank für deine Bemühungen!

Heute komm ich bloß leider nicht mehr an's Delhpi.. sollte ich aber weitere probs haben meld ich mich, versprochen ;)

mimi 8. Nov 2007 10:23

Re: Images flakern... :(
 
Ich würde alle BitMap in einer Liste beim Start des Programm laden.

Jetzt habe ich einen TBitMap als Buffer, das ist das Spiel Feld.
Ersteinmal unsichtbar, um es sichtbar zu machen musst du dich entscheiden Zwischen einen Panel, einer Paintbox oder einem TImage. Meiner Erfahrung nach ist das Panel zum Zeichnen am schnellsten, warum weiß ich nicht.

Jetzt kannst du z.b. mit Panel1.Canvas.Draw(0,0,Buffer) die gesammte Grafik kopieren.

Wenn du nur Stückweise Kopieren möchtest, solltest du CopyRect von TCanvas nehmen oder bitblt die Winapi Variante.... Was davon schneller ist kann ich dir nicht sagen, es heißt das bitblt schneller ist als copyRect, aber letztendlich ist copyrect mit Sicherheit auch nix anders als bitblt.

DeddyH 8. Nov 2007 10:47

Re: Images flakern... :(
 
Panel.Canvas? :gruebel:

mimi 8. Nov 2007 10:50

Re: Images flakern... :(
 
ja, unter Lazarus geht das, unter Delphi nicht ?
dann musst du eine eigene Klasse erstellen die du vom Panel ableitests und dort die Paint Methode Überschreiben, dann sollte es auch gehen.

Unter Lazarus ist das zeichnen auf ein Panel am schnellsten, abgehen von SDL oder so...... das weiß ich nicht.

(Ich habe aber gesehen, das unter Delphi nicht alle Komponenten ein public canvas haben, das ist evlt. auch nur unter Lazarus so.... dort kann ich sogar das canvas von der TScrollbox ansprechen, was ich unter Delphi nicht kann(wie ich vor einigen Tagen gesehen habe)).

Progman 8. Nov 2007 10:53

Re: Images flakern... :(
 
Es gibt speciell gestrickte Panel-Komponenten, die einen Canvas haben. Das Standard-Panel hat keinen veröffentlichten.

mimi 8. Nov 2007 12:28

Re: Images flakern... :(
 
naja wie gesagt unter Lazarus schon.... Unter Delphi müsste man halt eine eigene Klasse von einem Panel ableiten und gut ist.... Das dürfte das schnellste sein...

thkerkmann 8. Nov 2007 12:39

Re: Images flakern... :(
 
Naja, gibts dafür nicht die Paintbox ?

mimi 8. Nov 2007 12:55

Re: Images flakern... :(
 
Die ist leider langsamer als ein Panel, habe ich bemerkt... aber für die meisten zwecke reicht die schon aus.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:53 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz