Taille Maximale d'un controle ????

Signaler
Messages postés
28
Date d'inscription
mardi 7 mars 2006
Statut
Membre
Dernière intervention
22 janvier 2007
-
Messages postés
86
Date d'inscription
jeudi 23 octobre 2003
Statut
Membre
Dernière intervention
21 juin 2007
-
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

Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Membre
Dernière intervention
20 juin 2013
59
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
Messages postés
86
Date d'inscription
jeudi 23 octobre 2003
Statut
Membre
Dernière intervention
21 juin 2007
2
J'appuie l'idée de Bidou...
Tu y gagneras en ressources de garder ton Control à la même taille...