[Borland C++] Canvas does not allow drawing

Pagina: 1
Acties:

  • Weng
  • Registratie: Juni 2001
  • Laatst online: 11-05-2024

Weng

Are y'all ready kids

Topicstarter
Hallo,

wij zijn bezig met een opdracht, het travelings salesman probleem. Alles gaat goed behalve het tekenen van de routes. We willen het zo doen dat van elke population de kortste route getekend wordt. Er moet dus heel vaak achter elkaar getekend worden. We doen dat nu zo:
C++:
1
2
3
4
5
 
canvas->Pen->Color = clWhite; 
canvas->Brush->Color = clWhite; 
canvas->Rectangle(0,0,1000, 1000); 
currentPopulation->renderBest(canvas);


Dit stuk code wordt dus vaak aangeroepen.

We maken het scherm leeg met een wit vierkant en tekenen de beste route van de huidige populatie. Na een aantal secondes levert dit een foutmelding op: Canvas does not allow drawing.

Na wat op google te zoeken bleek al snel dat dit met resources te maken zou kunnen hebben. We draaien onder XP. We hebben het met een TPaintBox geprobeerd. We gebruiken de TCanvas (uiteraard).

Iemand enig idee hoe we dit kunnen voorkomen?

Aye aye captain


  • whoami
  • Registratie: December 2000
  • Laatst online: 15:14
Bij Borland spreken ze alleszins ook over jouw manier van werken om een Canvas te 'clearen':

klik

Je zult toch op de een of andere manier de resources van je Canvas moeten vrijgeven.

[ Voor 100% gewijzigd door whoami op 15-12-2003 19:36 ]

https://fgheysels.github.io/


  • Weng
  • Registratie: Juni 2001
  • Laatst online: 11-05-2024

Weng

Are y'all ready kids

Topicstarter
whoami schreef op 15 december 2003 @ 19:30:
Bij Borland spreken ze alleszins ook over jouw manier van werken om een Canvas te 'clearen':

klik

Je zult toch op de een of andere manier de resources van je Canvas moeten vrijgeven.
Bedankt voor de tip :P In de tussentijd is het probleem al weer verholpen. We gebruiken namelijk Threads in onze applicatie waardoor de synchronisatie een beetje verkeerd gaat. We hebben het opgelost door de Canvas te locken:
C++:
1
2
3
4
5
6
7
canvas->Lock();

canvas->Brush->Color = clWhite;
canvas->Rectangle(canvas->ClipRect); //Thnx :D
currentPopulation->renderBest(canvas);

canvas->Unlock();

Aye aye captain