if broken it is, fix it you should
Verwijderd
Waarschijnlijk moet je ergens aangeven (in de code of in de instellingen) dat je double buffering wilt gebruiken. Zoek eens met google "c++ builder double buffer"
Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.
Vertel verder....
if broken it is, fix it you should
Onvoorstelbaar!
• csOpaque toe te voegen aan de ControlStyle van het component. Dit zorgt ervoor dat de achtergrondkleur niet gewist wordt en voorkomt dus al een deel van het probleem;
• Creëer vervolgens een TBitmap met dezelfde grootte als de Canvas van het component.
Bij iedere iteratie:
• Wis de TBitmap of vul deze met een achtergrondkleur.
• Teken op de TBitmap i.p.v. op het Canvas van het component.
• Als je klaar bent met tekenen, gebruik je TCanvas::Draw() om deze bitmap in een keer naar de Canvas van het component te kopieren.
We adore chaos because we like to restore order - M.C. Escher
Ik heb nu het volgende gedaan:klinz schreef op woensdag 05 juli 2006 @ 19:02:
In C++Builder kun je dit op eenvoudiger wijze doen door bij het creëren van het component:
• csOpaque toe te voegen aan de ControlStyle van het component. Dit zorgt ervoor dat de achtergrondkleur niet gewist wordt en voorkomt dus al een deel van het probleem;
• Creëer vervolgens een TBitmap met dezelfde grootte als de Canvas van het component.
Bij iedere iteratie:
• Wis de TBitmap of vul deze met een achtergrondkleur.
• Teken op de TBitmap i.p.v. op het Canvas van het component.
• Als je klaar bent met tekenen, gebruik je TCanvas::Draw() om deze bitmap in een keer naar de Canvas van het component te kopieren.
Image 1 is waar ik in wil tekenen:
1
| Image1->ControlStyle << csOpaque; // instellen csOpaque |
en bij de iteratiestap:
1
2
3
4
5
6
7
8
9
10
| Graphics::TBitmap *pBitmap = new Graphics::TBitmap(); pBitmap->Width=Image1->Width; pBitmap->Height=Image1->Height; TCanvas *pCanvas=pBitmap->Canvas; //..... // hier wordt pCanvas vol getekend Image1->Canvas->Draw(0,0,pBitmap); delete pBitmap; |
maar nog steeds blijft hij knipperen
[ Voor 3% gewijzigd door elgringo op 06-07-2006 11:26 ]
if broken it is, fix it you should
if broken it is, fix it you should
1
2
3
| Me.SetStyle(ControlStyles.AllPaintingInWmPaint, True)
Me.SetStyle(ControlStyles.UserPaint, True)
Me.SetStyle(ControlStyles.DoubleBuffer, True) |
Als je klaar bent met pielen op die bitmap 'blit' je 'em in een keer naar je DC ( TBitmap? ) met BitBlt of StretchBlt.
Dat ijkt me ook ongeveer de strekking van jouw code ( ken cbuilder niet goed ) , maar ik weet niet of er misschien eigenschappen zijn van die objecten die er voor zorgen dat het toch noch gaat knipperen. ( Autorepaint en dat soort dingen )
Kan je dus ( zonder wat meer info ) niet echt verder helpen ben ik bang
Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.
Nu werkt het wel
if broken it is, fix it you should