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)

mercredi 11 juin 2008 à 23:01:50 | Draw sur Picture Box ou Panel ?

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


vendredi 13 juin 2008 à 02:17:18 | Re : Draw sur Picture Box ou Panel ?

Lutinore

Administrateur CodeS-SourceS
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 ).

vendredi 13 juin 2008 à 16:58:35 | Re : Draw sur Picture Box ou Panel ?

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

dimanche 22 juin 2008 à 08:54:43 | Re : Draw sur Picture Box ou Panel ?

Lutinore

Administrateur CodeS-SourceS

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.

dimanche 22 juin 2008 à 11:01:38 | Re : Draw sur Picture Box ou Panel ?

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();

jeudi 25 septembre 2008 à 23:22:26 | Re : Draw sur Picture Box ou Panel ?

olibara

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.

Bonsoir Lutinore

Je reviens sur ce sujet d'il y a quelques semaines car je n'ai toujours pas bien saisi comment on dessinait sur un pannel j'avoue ne pas avoir vraiment cherché car la methode du PB ne fontionne pas trop mal

Pour le moment
Et je construit des graphics
Soit avec Creategraphics (sur picture box)
Soit avec FromImage()

je fais des drawimage a partir d'images
Des drawlines (ou autre) sur des graphics

A quoi sert le OnPaint dans ce cas ?
Comment afficher sur autre chose qu'un PB ?



Cette discussion est classé dans : pb, box, panel, draw, picture


Répondre à ce message

Sujets en rapport avec ce message

[C#] Picture box & transparence [ par scoubidou944 ] (juste pour info, le theme Graphique a une erreur dans son écriture (Graphqiue)) J'ai une picture box. A partie de %WINDIR%/system32/wscui.cpl j'ai e picture box fond transparent [ par catamenia ] bonjours,Je voudrais faire glisser sur un control un picturebox avec un fond transparent pour que l'on voit que la forme de l'image du pictureboxquel Probleme avec un picture Box [ par francesdereve ] J'ai un picture Box ,chaque fois je clique sur un boutton capturerphoto,la premiere fois ca donne le message The path is not a legal form mais pour un creer un picture box [ par jul00 ] je voidrait creer des picture box qui representrons des tables(de restaurent). Le code est simplifié là, à la fin je voudrais metre ça dans une boucle récupérer le name d'un picture box qui vien d'etre clické [ par jul00 ] voila j'ai plusieur picture box crée à la volé (d'aprés ma base de données) qui pointent tous vere la meme fonction click : ... Box_Click(...)j'aimera Dessiner une ligne horizontale dans une picture box [ par z_san ] Bonjour Je suis entrain de travailler actuelement sur une petite application qui dessine des chronogrammes en fonction de l'état de byte dans un buff Generation de picture box supra lente... [ par Shogo6 ] Bonsoir a tous!!Alors voila j'ai un problème qui commence a me taper sur les nerfs : pour une application j'ai besoin d'afficher toute les images du d Imprimer un picture box [ par olibara ] Bonjour Encore un truc que je n'ai jamais fais et donc je cherche quelques conseils avant de faire n'importe quoi Je voudrais imprimer le co Graphics, bufferedgraphics, panel picturebox le brouillard [ par olibara ] BonjourApres avoir pas mal ramé au début sur les conceps des graphics et de dessin je réussi aujourd'hui a dessiner +/- ce que je veuxCependant je pre Picture Box et Bitmap [ par angel2610 ] Bonjour j'aimerai savoir comment je pourrai faire pour transformer un Bitmap en Image ou alors comment aficher le Bitmap dans un pictureBox.    Je fai


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,406 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.