Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2970 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [C#] On_Paint, brush pen.Dispose() ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C#] On_Paint, brush pen.Dispose() ?

n°1255396
fluminis
Posté le 29-11-2005 à 16:15:41  profilanswer
 

Bonjour,
 
Sur tous les exemples que je trouve sur le net, (y compris ceux de Microsoft)
dans les events OnPaint des controles, ils declarent leur Pen et leurs Brush, et les disposent a la fin.
 

Code :
  1. public void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
  2. {
  3. Pen pen = new Pen(Color.Black, 1);
  4. Brush brush = new SolidBrush(Color.White);
  5. Brush black = new SolidBrush(Color.Black);
  6. Font font = new Font("Arial",10);
  7. //utilise leur Pen et brush
  8. brush.Dispose();
  9. black.Dispose();
  10. font.Dispose();
  11. pen.Dispose();
  12. }


 
Quel est l'interet de faire ça ?
Ne pourrait-on pas sortir la définition des Pen, Brush et autre et les mettre en variable privée à la classe. Ca eviterait de faire les dispose à chaque appel de la fonction.
 
Si ils font ça, il doit y avoir une raison, non ?
 
fluminis


---------------
http://poemes.iceteapeche.com - http://www.simuland.net
mood
Publicité
Posté le 29-11-2005 à 16:15:41  profilanswer
 

n°1255493
Harkonnen
Un modo pour les bannir tous
Posté le 29-11-2005 à 18:49:12  profilanswer
 

Les objets Pen, Brush, etc... reposent sur GDI+, qui n'est pas une technologie managée. Malgré tout, le fonctionnement du CLR t'assure que le Garbage Collector fera son boulot dés que ces objets seront hors de portée, en théorie tu n'as donc pas besoin d'appeler Dispose(). Néanmoins, comme il s'agit d'opérations graphiques, donc nécessitant un traitement rapide, appeler Dispose() explicitement sera beaucoup plus rapide que l'attente du GC. Ca te permettra de libérer toutes les ressources non managées, et ceci de manière beaucoup plus efficace et rapide.


Message édité par Harkonnen le 29-11-2005 à 18:49:56
n°1255518
fluminis
Posté le 29-11-2005 à 19:10:19  profilanswer
 

Mais vaut-il mieux creer ces objets à chaque appel de ma fonction ou de les déclarer une fois pour toute comme membres privés de ma classe ?
 
Car allouer les objets et les detruire à chaque fois ca doit prendre du temps d'execution, non ?


---------------
http://poemes.iceteapeche.com - http://www.simuland.net
n°1255558
Harkonnen
Un modo pour les bannir tous
Posté le 29-11-2005 à 20:15:52  profilanswer
 

Bah, tu peux faire comme tu veux, ça dépend si tu utilises beaucoup d'objets GDI+ ou pas. Si tu en as peu, je pense que le mieux est de les créer dans le OnPaint, sinon effectivement, tu peux les déclarer comme membres de classe.


---------------
J'ai un string dans l'array (Paris Hilton)

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [C#] On_Paint, brush pen.Dispose() ?

 

Sujets relatifs
MFC Problème d'affichage (OnPaint() et ON_WM_PAINT())[Access/VBA]Subclasser une form => Paint?
[Java] Dessin dans un buffer affiché par paint => problème RESOLUProbleme de WM_PAINT
[Canvas] pb : ma méthode repaint() n'appelle pas mon paint() ![applet] La fonction paint()
"paint" en javapaint brush en VC++ ?
[java] dessiner une image ailleurs que dans paint() 
Plus de sujets relatifs à : [C#] On_Paint, brush pen.Dispose() ?


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)