begin process at 2008 08 22 04:49:13
1 229 775 membres
46 nouveaux aujourd'hui
14 267 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Draw sur Picture Box ou Panel ? [ Windows / Formulaire / Winforms / Controls ] (olibara)

Draw sur Picture Box ou Panel ? le 11/06/2008 23:01:50

olibara

Bonjour

J'ai developpé une application qui fait pas mal de bricolage graphique sur un picturebox
Ca marche tres bien

J'ai lu quelques articles qui déconseillent fortement l'usage du picturebox pour faire du dessin et preconisent plutot un panel

J'ai essayé de remplacer mon pb par un panel, apres avoir adapte deux trois trucs et surtout remplace les assignation d'images (resultats de certains draw)

pb.image=image;
par des
panel.backroundimage=image

Ca marche de nouveau
Mais je ne vois pas l'avantage, surtout un inconvénient c'est que j'ai un effet de flikkering dans les move / redraw que je n'avais pas du tout sur le pb

Quelqu'un peut-il apporter sa connaissance / expérience sur le sujet ?

Merci beaucoup


Re : Draw sur Picture Box ou Panel ? le 13/06/2008 02:17:18

Lutinore
(Admin CS)
Réponse acceptée !
Salut, tu utilises le Panel de la même façon que la PictureBox, c'est à dire en assignant l'image au background ( panel.backroundimage=image ou pb.image=image ) ce n'est pas performant ce genre de chose, dérive un simple contrôle et dessine tout dans sa méthode OnPaint et/ou OnPaintBackground, pour les flickers active le bit de DoubleBuffer ( méthode SetStyles ).

Re : Draw sur Picture Box ou Panel ? le 13/06/2008 16:58:35

olibara
Salut Lutinore

Jusqu'ici le picturebox ne me pose aucun problème apparent
Sauf que j'ai lu des avis déconseillant l'usage de ce control pour faire du draw
Le pannel n'a pas de methode setstyle ni doubble buffer
Su Picturebox je n'emploie pas ca et je n'ai pas de problème de scintillement

Pour ce qui est de l'assignation d'une image j'emploie cela pour creer des fonds fixes moins volatils que les manipulation de l'utilisateur

J'ai donc pratiquement un dessin en deux temps
1- Une assignation d'image dans un certain contexte
2- Un dessin qui peut changer sur cette image

Re : Draw sur Picture Box ou Panel ? le 22/06/2008 08:54:43

Lutinore
(Admin CS)

Le panel n'a pas de méthode setstyle ni doubble buffer

Si, comme tout les contrôles, mais c'est une méthode protégée.

Sur Picturebox je n'emploie pas ca et je n'ai pas de problème de scintillement

La PictureBox utilise apparemment déja un double buffer, et c'est pour ça aussi que je te disais de dériver un simple contrôle, là t'es sûr de tout maitriser dans la phase de dessin.

j'emploie cela pour creer des fonds fixes moins volatils que les manipulation de l'utilisateur

Oui mais ( panel.backroundimage=image ou pb.image=image ) c'est pas comme ça qu'on dessine ! du moins pas quand on veut un code performant. fais tes dessins dans un off screen ( une image non affichée sur l'ecran ) puis dans le OnPaint tu dessines ton image ( DrawImage ); ça revient à faire son propre double buffer.

Re : Draw sur Picture Box ou Panel ? le 22/06/2008 11:01:38

olibara
Salut Lutinore

Merci pour tes réponses

1- Methode double buffer protégée : comment puis-je y acceder ?

2- Tu me conseille de faire mes dessin dans un off screen

Mais !! N'est ce pas ce que je fais déja ?? Ce qui est comme tu le dis une sorte de double buffering

      Image Zoom = new Bitmap(pb_zoom.Width, pb_zoom.Height);
      Graphics graphics = Graphics.FromImage(Zoom);

Ensuite draw sur mon graphics
Ensuite 

     pb_zoom.Image = Zoom;
   
Quelle est la différence avec ce que tu conseille ?
Attention ! : ce que je fais la c'est pour construire l'image de fond initiale
Apres j'en convient je fais des draws sur un graphics directement a l'écran

  cGraphics = pb_zoom.CreateGraphics();


Classé sous : pb, box, panel, draw, picture

Participer à cet échange

Pub



Appels d'offres

CalendriCode

Août 2008
LMMJVSD
    123
45678910
11121314151617
18192021222324
25262728293031

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Boutique

Boutique de goodies CodeS-SourceS