TPaintBox mit DoubleBuffered
-
Hi
Wie kann ich TPaintBox die DoubleBuffered propertie verpassen?
Oder sonst, was würde sich besser eignen als einfache Zeichenfläche/Canvas für ein Spielfeld?
Zeichne nur paar Recktecke und Elipsen in verschiedenen Farben, aber alle 5ms..
Mich stört eben das flackern
wäre froh um hilfe
-
Was funktioniert nicht bei:
Form1->DoubleBuffered = true;???
-
Buffered schrieb:
Was funktioniert nicht bei:
Form1->DoubleBuffered = true;???
Je nach dem welche Version er nutzt, gibt es diese Membervariable nicht. Ist erst ab BCB6 in TForm enthalten.
-
great noobian schrieb:
Zeichne nur paar Recktecke und Elipsen in verschiedenen Farben, aber alle 5ms..
wieso so oft?
-
BigNeal schrieb:
great noobian schrieb:
Zeichne nur paar Recktecke und Elipsen in verschiedenen Farben, aber alle 5ms..
wieso so oft?
weil ich nicht ewig auf den x-tausendsten zyklus meiner simu (ne art game of life) warten mag, die objekte ändern jedesmal ihre position.
ist das zu dekadent?
wie mach ichs besser? mit 50ms könnt ich auch leben, doch da flickerts genauso.Buffered schrieb:
Was funktioniert nicht bei:
Form1->DoubleBuffered = true;das geht, nur flackert das auf paintbox1 gezeichnete noch immer.
wenn ich auf die form1 zeichne ist es schön ruhig und flüssig.
wollt aber nur ein teilbereich nutzen.PaintBox1->DoubleBuffered = true;das geht nicht..
ps benutze bds2006
-
Code ???
-
// MainForm.h class TForm1 : public TForm { __published: // IDE-managed Components TPaintBox *PaintBox1; //... //MainForm.cpp //... void TForm1::initialize() { Form1->DoubleBuffered = true; //<== PaintBox1->DoubleBuffered = true; geht ned //... void __fastcall TForm1::FormPaint(TObject *Sender) { update_settings(); foo->paint( PaintBox1 ); } //... //Foo.cpp void foo::paint( TPaintBox1* paint_area ) { paint_area->Canvas->Pen->Style = psSolid; paint_area->Canvas->Brush->Style = bsSolid; paint_area->Canvas->Pen->Color = clBlack; paint_area->Canvas->Brush->Color = clBlack; int area_size = paint_area->Width; int space = area_size/BAR; int size = space - SPACER*2; for( int i = 0; i < BAR; i++ ) { //<== BAR ist const 100 for( int j = 0; j < BAR; j++ ) { if( field[i][j]->is_foo ) { //<== field ist Array[BAR][BAR] von blubs paint_area->Canvas->Rectangle( //<== hier wird gemalt i*space + SPACER, j*space + SPACER, i*space + size + SPACER, j*space + size + SPACER); } } } }danke nochmals
-
PuppetMaster2k schrieb:
Je nach dem welche Version er nutzt, gibt es diese Membervariable nicht. Ist erst ab BCB6 in TForm enthalten.
DoubleBuffered ist auch schon bei BCB5 (In TWinControl) enthalten.