Taille Maximale d'un controle ????

tservolle Messages postés 28 Date d'inscription mardi 7 mars 2006 Statut Membre Dernière intervention 22 janvier 2007 - 18 août 2006 à 17:17
nerix27 Messages postés 86 Date d'inscription jeudi 23 octobre 2003 Statut Membre Dernière intervention 21 juin 2007 - 24 août 2006 à 11:26
Bonjour,
Savez vous si il existe une limite maximale pour la taille d'un controle dans un Winform ???
En fait je suis en train d'écrire un controle qui contient entre autre un panel qui permet d'afficher des courbes.
Je veux que l'utilisateur puisse zoomer dans ce controle et se déplacer en utilisant les scrollbars de mon panel. Pour cela j'ai rempli mon panel avec mon objet graphique, et a chaque foir que l'utilisateur clique sur le bouton du zoom j'augmente la taille de mon controle graphique sans modifier la taille du panel. Du coup les scrollsbars du panel me permettent d'aller voir la zone non affiché de mon controle de graphique.
Mais lorsque je zoome trop, j'ai un vilain message d'erreur
J'ai l'impression que ce message arrive lorsque la hauteur ou la longueur de mon controle vient flirter avec les 10000 pixels, mais je ne suis pas encore sur
Qulqu'un aurait il deja rencontré ce genre de soucis


Pour info l'erreur est la suivante :
System.ComponentModel.Win32Exception: Opération réussie
   at System.Windows.Forms.DibGraphicsBufferManager.CreateCompatibleDIB(IntPtr hdc, IntPtr hpal, Int32 ulWidth, Int32 ulHeight, IntPtr& ppvBits)
   at System.Windows.Forms.DibGraphicsBufferManager.CreateBuffer(IntPtr src, Int32 offsetX, Int32 offsetY, Int32 width, Int32 height)
   at System.Windows.Forms.DibGraphicsBufferManager.AllocBuffer(Graphics targetGraphics, IntPtr targetDC, Rectangle targetBounds)
   at System.Windows.Forms.DibGraphicsBufferManager.AllocBufferInTempManager(Graphics targetGraphics, IntPtr targetDC, Rectangle targetBounds)
   at System.Windows.Forms.DibGraphicsBufferManager.AllocBuffer(IntPtr target, Rectangle targetBounds)
   at System.Windows.Forms.Control.WmPaint(Message& m)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.ControlNativeWindow.OnMessage(Message& m)
   at System.Windows.Forms.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)






Merci d'avance
tservolle

2 réponses

cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 60
19 août 2006 à 19:19
Euh non, je ne pense pas qu'il y ait de taille maximale !
Mais je ne comprend pas vraiment comment tu as conçu la chose : pourquoi le Control s'agrandirait si on zoom? (si je zoom à 1000x, tu vas faire un Control qui a MILLE fois la taille de départ?????!!!!).

Je pense que tu devrais penser autrement (pas testé, c'est une idée) : La surface que tu display est toujours la même, juste avec une précision différent (dépendante du zoom). Si on zoom, les scrollBar deviennent alors plus grandes, c'est évident, mais la taille du Control ne change pas (pour cela, ne pas utiliser les scrollBar de ScrollableControl mais utiliser le component ScrollBar que tu programmeras manuellement).
De cette façon, tu ne dois pas stocker l'image en entier (ou du moins, ne pas l'afficher en entier) mais juste la portion qui t'intéresse, à savoir celle demander par l'utilisateur (en fonction de la position des ScrollBar).
Tu gagnes en performances, et t'as pas de Control qui font des kilomètres de large/long.

<hr size="2" />VC# forever
0
nerix27 Messages postés 86 Date d'inscription jeudi 23 octobre 2003 Statut Membre Dernière intervention 21 juin 2007 2
24 août 2006 à 11:26
J'appuie l'idée de Bidou...
Tu y gagneras en ressources de garder ton Control à la même taille...
0
Rejoignez-nous