ipama7
Messages postés2Date d'inscriptionsamedi 28 octobre 2006StatutMembreDernière intervention 7 février 2007
-
7 févr. 2007 à 18:18
soldier8514
Messages postés295Date d'inscriptionvendredi 20 décembre 2002StatutMembreDernière intervention24 janvier 2014
-
21 mars 2007 à 22:00
bonjour,
Je souhaite afficher dans un picturebox une image de 6000*6000 que je construis à l'aide d'une succession de rectangles
En passant par un bitmap (Graphics.fromImage(bmp)) l'occupation memoire devient bcp trop importante donc trop long lorsqu'il fO deplacer le scrollbar.
En créeant un graphic depuis un picturebox, (picture.creategraphics), mon image disparaissait quand je deplacait le scrollbar .J'ai donc placer la construction de mon image dans la methode paint. Seulement la construction de l'image se fait à chaque fois et donc c'est aussi long à afficher lorsque je deplace le scrollbar.
Pour ameliorer le temps d'affichage, je souhaite construire uniquement la partie de l'image visible dans le picturebox seulement je ne sais pas comment connaitre les coordonnées de la partie de l'image à afficher.
Si qqun pE me proposer une solution je vous en remercie
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 8 févr. 2007 à 09:36
Je ne peux te proposer un code (je n'utilise pas VB.Net) mais des idées :
La 1ère et la plus simple siu cette proproété existe sous VB.Net : la propriété AutoRedraw à mettre à True . Ainsi : le 1er temps de chargement sera long (puisque ton image est grande) mais elle n'aura pas à être reconstituée à chaque fois au scroll
La 2ème est d'utiliser la fonction StretchBlt de l'Api de Windows pour ne dessiner que la partie que tu veux, en déterminant les coordonnées choisies sur l'image source et les coordonnées correspondantes de ta pictureBox. Si tu n'as pas à agrandir ou rapetisser l'image, tu peux par ailleurs utiliser tout simplement la fonction BitBlt de l'Api de Window au lieu de StretcBlt