tservolle
Messages postés28Date d'inscriptionmardi 7 mars 2006StatutMembreDernière intervention22 janvier 2007
-
18 août 2006 à 17:17
nerix27
Messages postés86Date d'inscriptionjeudi 23 octobre 2003StatutMembreDernière intervention21 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)
cs_Bidou
Messages postés5487Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 201361 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.