Faire apparaître une image à 25% de sa taille

Faire apparaître une image à 25% de sa taille - VB/VBA/VBS - Programmation

Marsh Posté le 01-09-2006 à 15:03:07    

Bonjour,
 
je suis en thèse de physique, et pour dépouiller nos résultats, on utilise des programmes écrits dans le labo en VB.  
Cela consiste en une analyse d'image d'une taille h x L.
Pour diverses raisons, je souhaite passer à des images de taille 2h x 2L. Le problème est que l'image 2h x 2L ne tient pas sur mon écran et que j'ai besoin de faire certaines manipulations sur l'image "entière", notamment des définitions de zone.
 
Comment faire pour afficher l'image au quart de sa taille, tout en conservant les données de la grande image en mémoire du problème? (car sinon, je reviens aux images h x L, et je perds de l'information)
J'ai essayé de voir ce qui pouvait se passer en utilisant ScaleHeight et ScaleWidth, mais ça n'a pas été concluant  :( , et n'étant pas une pro de la programmation, je ne sais pas vers quoi me tourner. (je n'ai rien trouvé sur google ni sur ce forum avec mes mots clés, pas forcément pertinents?)
 
Merci,
 
Pimprenelle57

Reply

Marsh Posté le 01-09-2006 à 15:03:07   

Reply

Marsh Posté le 02-09-2006 à 02:01:04    

Peux etre au niveau de la fonction autosize à false, mais toi ta zone d'image ne sera pas fixe ?

Reply

Marsh Posté le 04-09-2006 à 09:09:08    

Non, ma taille d'image ne sera pas fixe : 2 tailles possibles "petites", et les deux "grandes" correspondantes. Je vais tester autosize, et voir ce que ça donne.  
 
Merci!

Reply

Marsh Posté le 04-09-2006 à 09:25:13    

Bon, en fait, il me tronque l'image et n'en prend que le quart dans le coin gauche. :(  
Si quelqu'un a une autre idée (il faudrait que pour l'affichage, VB "compresse" 4 pixels en 1, mais pas pour l'analyse), merci d'avance!

Reply

Marsh Posté le 04-09-2006 à 10:02:26    

Bonjour,
 
Tu peux chercher du côté de la fonction API StretchBlt. On trouve de nombreux exemples de code à son sujet.
Sinon, plus simplement, tu peux utiliser un contrôle "Image" au lieu d'une PictureBox. Le contrôle Image a une propriété Stretch, réglée sur True, pour afficher l'image avec une hauteur et une largeur réduites.
 
A+
Horatio


Message édité par Lord Nelson le 04-09-2006 à 10:03:00
Reply

Marsh Posté le 04-09-2006 à 15:45:04    

Bonjour,
 
je ne peux pas utiliser le contrôle Image, car je ne peux pas, dans ce cas, tracer des lignes/cercles sur mon image pendant l'exécution :  
j'ai en fait une pile d'images, constituant un film (de petites cellules vivantes :)). Il faut ensuite que je sélectionne des zones sur la première image (tout ça, c'est bon, je sais faire) et ensuite, il va appliquer ces zones et faire des détections/calculs sur les images suivantes, jusqu'à la fin du film.
Il faut donc que j'arrive à faire les choses suivantes :  
- charger ma grosse image quelque part, et ne la faire apparaître que dans une fenêtre faisant le quart de sa taille ;
- que je définisse, sur l'image réduite, les zones que le programme aura à analyser sur la grande image (créer une sorte de fonction réciproque sera donc nécessaire) ;
- que le programme analyse les zones définies sur la grosse image, puis sur les suivantes, jusqu'à la fin du film.
 
Je suis désolée, je me suis rendue compte ce matin que je n'avais pas tout formulé, et donc que le problème n'apparaissait pas entier. J'espère que là, c'est complet et clair...
 
Merci,
 
Pimprenelle

Reply

Marsh Posté le 04-09-2006 à 16:42:26    

Re,
 
Donc c'est bien la fonction StretchBlt que tu vas devoir utiliser sur des contrôles PictureBox.
 
A+
Horatio

Reply

Marsh Posté le 06-09-2006 à 10:51:29    

Merci pour la fonction StretchBlt, elle m'a en effet permis de réduire mon image.  
 
Pimprenelle

Reply

Marsh Posté le 06-09-2006 à 16:49:19    

Re,
 
je suis vraiment pas douée, désolée, mais j'aimerais enregistrer le résultat de StretchBlt (et surtout qu'il remplace la valeur de Picture1.Picture), mais pour le faire apparaître dans ma Picturebox j'utilise Debug.Print et visiblement ça n'enregistre pas. C'est l'image de base (la quatre fois plus grosse) qui est en mémoire.
 
Quelqu'un aurait-il une idée?
 
Merci encore,
 
Pimprenelle


Message édité par pimprenelle57 le 06-09-2006 à 16:50:14
Reply

Marsh Posté le 07-09-2006 à 10:30:07    

Salut Pimprenelle,
 
Il me semble que l'instruction SAVEPICTURE pourrait te convenir. Tu devrais trouver un exemple dans l'aide VB ou avec Google.
A+
Horatio

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed