Problème de taille avec PictureBox

Signaler
Messages postés
224
Date d'inscription
samedi 26 juillet 2003
Statut
Membre
Dernière intervention
30 mars 2009
-
Messages postés
46
Date d'inscription
jeudi 31 juillet 2003
Statut
Membre
Dernière intervention
14 juin 2009
-
Voilà,

donc en gros, j'ai remarqué qu'il y avait une différence de valeur entre Picture1.Height et Picture1.Picture.Height

Picture1.Autosize est à True, c'est à dire que le controle prend la taille de l'image donc les 2 valeurs devraient être pareilles...

Picture1.Height est en "Twips" et je pense que Picture1.Picture.Height est dans un autre mode.

si quelqu'un pouvait m'éclairer,

merci.

.:. NoRabbit .:.

6 réponses

Messages postés
63
Date d'inscription
lundi 17 février 2003
Statut
Membre
Dernière intervention
13 juillet 2005

Tout dépend du ScaleMode que tu as mise dans les propriété du pictureBox

Picture1.ScaleMode = 1 - Twip ou
Picture1.ScaleMode = 2 - Point ou
Picture1.ScaleMode = 3 - Pixcel ou
etc....

Et un Height d'un object est exprimé en Twip ..

André St-Onge 8-)
Messages postés
201
Date d'inscription
mercredi 25 septembre 2002
Statut
Membre
Dernière intervention
10 novembre 2007

Picture1.Height est en "Twips" et Picture1.Picture.Height est en unités Himétrique.

1 unité Himétrique = .01 milimètre
Donc une image de 20 mm de haut = 2000 Himétrique.

Pour t'en assurer, met la propriété ScaleMode = milimètre et la valeur que prend scaleHeight sera 100 fois plus petite que Picture1.Picture.Height
Messages postés
224
Date d'inscription
samedi 26 juillet 2003
Statut
Membre
Dernière intervention
30 mars 2009

non, en fait le scale mode ne change pas la valeur de la propriété Picture1.Picture.height (ou width).

j'ai fait quelques petites recherches hier soir et j'ai découvert que la valeur de cette propriété était un calcul par rapport à sa valeur en pixel.

je m'explique :

si la hauteur de l'image (pas du controle) est de 1 pixel, alors la propriété height (ou width) de l'image sera de 26.
pour chaque pixel de plus, la propriété augmentera de 27, puis de 26, et ainsi de suite.

voilà, je ne sais pas si on m'a compris mais le fait est que ce serait trop compliqué de calculer la valeur inverse.

mais c'est bon, j'ai trouvé un autre moyen de pallier à ce problème.

merci.

.:. NoRabbit .:.
Messages postés
224
Date d'inscription
samedi 26 juillet 2003
Statut
Membre
Dernière intervention
30 mars 2009

le problème, c'est que la valeur en millimetre n'est pas assez précise si je la multiplie par 100

valeur Himetrique : 265
valeur en Millimètre : 2,645836 ( * 100 = 264,6)

.:. NoRabbit .:.
Messages postés
201
Date d'inscription
mercredi 25 septembre 2002
Statut
Membre
Dernière intervention
10 novembre 2007

Pourquoi tu te casse la tête à essayer de faire une conversion à partir de Picture1.Picture.Height ?

Tout ce que tu as à faire c'est:
1- Mettre scaleMode dans l'unité de mesure que tu désires
2- Lire la valeur de ScaleHeight
Voila c'est tout...

NOTE:
Il me semble que tu confonds la signification de certaines propriétés...

Picture1.Height c'est la hauteur EXTÉRIEURE du picturebox.

Picture1.ScaleHeight c'est la hauteur INTÉRIEURE du picturebox.

Picture1.Picture.Height c'est la hauteur de l'image dans le picturebox peu importe la dimention du picturebox.

DONC:
1- Si le picturebox n'a pas de ligne de contour alors Height = ScaleHeight sans tenir compte des unités de mesure.
2- Si Autoresize true alors scaleHeight picture.height sans tenir compte des unités de mesure.
Messages postés
46
Date d'inscription
jeudi 31 juillet 2003
Statut
Membre
Dernière intervention
14 juin 2009

Bonjour,
j'ai moi aussi un petit probleme.
Lorsque je met mon controle (picturebox dans un form de taille definie) a une taille definie avec scalemode =millimetre et scale height et scale width, le controle apparaissant sur l'ecran n'a jamais cette taille et de plus cette taille change avec la resolution de l'ecran donc impossble d'obtenir quelque chose à une échelle définie. Par contre lorsque j'imprime le controle (contenu du picture box) et ben la il est imprimé a l'echelle.
Auriez vous une solution svp?

Merci

Puje