13. maj 2003 - 19:38Der er
11 kommentarer og 1 løsning
Double Buffering af TForms Canvas i BCB 4
Jeg er igang med et program som næsten udelukkende hele tiden opdaterer Form1->Canvas (Form1 er hovedformen) på den ene eller den anden måde, og det gør jo at billedet flimrer ret kraftigt. Jeg ved dette kan fjernes via Double Buffering - men jeg ved ikke hvordan jeg laver denne buffering, så hvis nogen kan hjælpe vil det være alle tiders :)
Danmark vil mindske afhængigheden af globale techgiganter, men det kræver mere end politiske formuleringer og strategier, understreger PROSA’s formand Niels Bertelsen.
Hmmm jeg må indrømme at jeg ikke kan se hvorfor det ikke virker, da jeg gør det samme som du gør i dit eksempel (der btw. ikke er lavet i BCB :D) Det her burde da virke ?
Graphics::TBitmap *bimp = new Graphics::TBitmap(); bimp->Canvas->Brush->Color = clWhite; bimp->Canvas->Rectangle(0,0,100,100); Form1->Canvas->Draw(0,0,bimp);
Her er btw. hvad hjælp filen siger om TBitmap->Canvas:
Canvas allows drawing on the bitmap by providing a TCanvas object for this purpose. Drawing on the canvas effectively modifies the underlying bitmap image pixels. Any canvas operation is valid on a bitmapnot just Draw and StretchDrawincluding line drawing, rectangles, and circles. The bitmap object is passed as a parameter to these methods.
Det ser ud til at man skal smide bitmap objektet med som parameter til rectangle, ellipse etc. Men parameterlisten til de 2 er jo bare int,int,int,int så det fatter jeg ik helt :/
Men hmm det løste ikke problemet at gøre følgende (ligger i OnPaint-eventen for formen):
bitmap->Canvas->Rectangle(0,ForskydningY, rumX, rumY+ForskydningY); for (int i = 0; i < plads; i++) ting[i]->paint(); // tegner div. objekter på bitmap FrmMain->Canvas->Draw(0,0,bitmap);
det flimrer stadigvæk - så nu er spørgsmålet bare hvad jeg gør forkert ?
Nåja jeg kalder Repaint hver gang jeg flytter på et objekt, måske det er der problemet ligger ? (Dvs. for hver pixel jeg flytter et objekt så kalder den repaint())
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.