scove
Messages postés6Date d'inscriptionsamedi 2 avril 2005StatutMembreDernière intervention27 juin 2005
-
12 mai 2005 à 09:49
cs_coq
Messages postés6350Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014
-
24 mai 2008 à 17:53
Bonjour,
Je développe (avec un groupe projet) une application d'étude de
comportement animal à l'aide d'un GPS. En gros on doit afficher sur une
carte le parcours d'un animal portant un GPS (des lignes entre les
points relevés affichés sur la carte).
M'occupant de la partie graphique (zoom, déplacement sur la carte,
géoréférencement) j'ai rencontré une curiosité que je ne m'explique
pas.
Tout d'abord je tiens à préciser que j'ouvre mon image dans une
PictureBox elle même contenu dans un panel avec l'autoscroll activé.
Je dispose de plusieurs carte scannée dont une fesant environ 69
millions de pixels (9920 x 7015 pixels), bizarrement le deplacement
(pan) s'éffectu de manière très fluide dans cette dernière alors que
des cartes plus petite (5 à 30 millions de pixels) bataille beaucoup
plus ... J'ai bien entendu vérifier le format d'image (bmp) le nombre
de couleur (codé sur 24bits donc non indéxée) ainsi que la compression
(aucune), j'ai mis ces attributs sur les cartes plus petites mais
même résultat. Là où le problème devient vraiment étrange c'est que si
je redimensionne une carte plus petite au format de la grande (par
exemple en passant de 5300x3000 à 9920x7015) le deplacement devient
comme par magie aussi fluide ! J'ai donc essayé de redimensionner la
petite image de manière à ce qu'elle ait le même ratio que la grande
(1.414 approximativement et multiple de 8 pour la largeur), mais il
s'est avéré que la navigation redevenait saccadée.
Je me pose donc plusieurs questions :
- est-ce une propriété intrinsèque de l'objet PictureBox ?
- est-ce une propriété intrinsèque de l'objet Panel ?
- ai-je mal réaliser ma fonction déplacement panoramique ?
cs_Bidou
Messages postés5487Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 201361 12 mai 2005 à 10:53
Je ne sais pas pour ton problème
Par contre, il paraîtrait que si les performences (fluidité) sont vitales, il est plutôt recommandé de travailler avec du code non-managé (pointeur).
scove
Messages postés6Date d'inscriptionsamedi 2 avril 2005StatutMembreDernière intervention27 juin 20051 12 mai 2005 à 11:09
Je m'en doute bien mais je ne fait
qu'ouvrir des images et deplacer des scrollbars, je n'ai aucun
traitement autre que le zoom (dont le fonctionnement me satisfait),
donc travailler directement avec les pointeurs ne changera rien pour
moi.
MorpionMx
Messages postés3466Date d'inscriptionlundi 16 octobre 2000StatutMembreDernière intervention30 octobre 200857 12 mai 2005 à 17:11
Et meme qu'a la place du DrawImage, tu pourrais tenter d'utiliser bitblt
J'y ai vu parfois de belles différences de perfs selon les tailles
d'image, surtout quand le code nécessitait beaucoup de zooms ou de
déplacements de l'image
charliepben
Messages postés2Date d'inscriptionmardi 19 avril 2005StatutMembreDernière intervention25 mai 2008 24 mai 2008 à 17:42
Bonjour je poursuis cette discution car je développe actuellement un application très similaire, c# . net CF 2
et je me heurte à un problème que tu n'évoques pas scove, comment ouvrir une image d'une taille conséquente !!??
je me heurte à un "OutOfMemory Exception ".... (et après beaucoups de recherches je ne suis pas le seul dans ce cas)
qui permet de charger une image hi-res et de créer un Bitmap de la taille désirée.
....ça me permet bien de charger l'image et d'en faire quelque chose, une miniature.....
mais ça ne résoud pas mon problème, je souhaite afficher une certaine zone d'une image,
- je souhaite donc soit pouvoir afficher ma grosse image dans un panel et scoller pour se déplacer
- soit récupérer directement la zone dans le fichier, sans charger toutes l'image,
- soit obtenir une meilleure idée de votre part.???