Bonjour
Il y a quelques temps m'est venue l'idée de faire un petit visualiseur d'images en Vb Net.
Seulement après quelques test j'ai abandonné pour des raisons de performances.
Mettre une images dans un picture puis se deplacer dedans devenait de plus en plus difficile plus l'image etait grande et le déplacement n'etait plus fluide du tout.
J'avais essayé un ScrollableControl (qui faisait tout tout seul), puis des H et Vscroll en redissinant en GDI+ juste le necessaire, mais rien n'etais bien terrible niveau perf.
A partir d'image 1000 x 1000 c'etais déjà plus fluide.
Seulement voila en faisant quelques test sur des ColorMatrix j'ai reussis à obtenir l'effet voulu completement par hasard, un scrolling très fluide sur de grandes images. Mais le probléme c'est que je ne comprend pas pourquoi !
J'arrive à afficher et a déplacer des images de 8 000 x 8 000 pixels parfaitement fluidement (d'ailleurs j'aimerai bien tester des images plus grande mais .Net me retourne un System.OutOfMemoryException)
Je suis arrivé à cela en créant simplement un Bitmap (je charge une image de 8000x8000) que je met dans un picturebox.
Ensuite ce qui permet d'accelerer je ne sais comment, je créer une 2éme image vide, puis un graphics sur cette 2éme image, ensuite je créé un Color matrix et je dessine avec le graphics dans l'image2 l'image 1 avec le colormatrix.
Je dispose le graphics, et la 2éme images et de suite le scrolling est parfaitement fluide !
Il semble bien y avoir un rapport avec le colormatrix car si avec le graphics de l'image2 je dessine simplement l'image 1 sans colormatrix ca n'a pas d'effet.
Je voudrai donc savoir si quelqu'un pouvais m'expliquer ce comportement étrange ?
Je peux fournir l'application/code si besoin.