En clair, twips et pixels ? [Résolu]

mailys6 49 Messages postés lundi 17 février 2003Date d'inscription 1 octobre 2005 Dernière intervention - 1 avril 2005 à 11:29 - Dernière réponse : mailys6 49 Messages postés lundi 17 février 2003Date d'inscription 1 octobre 2005 Dernière intervention
- 1 avril 2005 à 12:50
Ca peut paraître être une question bête, mais ça fait une heure que je chercher dans le forum après une réponse, et les réponses se croisent mais je ne parviens toujours pas à comprendre comment fonctionne la conversion twips en pixel.

J'ai une image qui est dans une form où scaleMode = Twip
Les propriétés Top, Left, Width et Height de mon image sont donc en Twips si j'ai bien compris.
Mais comment je fais pour obtenir ces propriétés en pixels, sans changer le scaleMode de la form ? Faut-il utiliser TwipsPerPixelX ? Et si c'est le cas quand doit-on utiliser TwipsPerPixelX et dans quel cas, il faut prendre TwipsPerPixelY ?

Merci d'avance,

Mailys
Afficher la suite 

4 réponses

Gobillot 3140 Messages postés vendredi 14 mai 2004Date d'inscription 31 mars 2015 Dernière intervention - 1 avril 2005 à 11:59
+3
Utile
On utilise TwipsPerPixelX ou TwipsPerPixelY pour convertir les Twips en Pixels ou inversement, X pour horizontal et Y pour vertical.
Alors que les données de la Forme (Left,Top, Width,Height) sont en Twips et qu'on a besoin de paramètres en Pixels il faut bien les convertir.
Le Scalemode des containers ne joue que pour la partie interne (zone client) et non pas pour les dimensions du container. par exemple une frame n'a pas de propriété Scalemode, ses dimensions peuvent être en Pixels ou autre mais à l'intérieur les controles seront toujours en Twips.
Pour convertir des données en Pixels alors que ces données sont dans une unité qui dépendent du container, on utilise plutôt ScaleX et ScaleY

W = ScaleX(Command1.Width, Me.ScaleMode, vbPixels)
H = ScaleY(Command1.Height, Me.ScaleMode, vbPixels)

Daniel
Cette réponse vous a-t-elle aidé ?  
mailys6 49 Messages postés lundi 17 février 2003Date d'inscription 1 octobre 2005 Dernière intervention - 1 avril 2005 à 12:33
0
Utile
Ca ne fonctionne pas ! Enfin je dois m'y prendre mal !

J'vais expliquer mon cas :
J'ai une image importée dans VB. L'image se resize automatiquement tout en restant proportionnelle.
Lorsque l'utilisateur clique sur OK, j'enregistre, entre autre, les propriétés X, Y, Width et Height dans un fichier xml.
Ce fichier xml est récupéré par un autre programme, en flash. Je récupère les propriétés X, Y, Width et Height et j'afficher l'image dans flash.
Et dans flash, l'image est déformée.
Lors de l'enregistrement de mes variables, je pratique de la façon suivante (je suis dans un module) :

FrmLabel.ScaleY(FrmLabel.Img.Height, FrmLabel.ScaleMode, vbPixels)
FrmLabel.ScaleX(FrmLabel.Img.Width, FrmLabel.ScaleMode, vbPixels)

où FrmLabel est le nom de la form dans laquelle se trouve mon image Img

Dans flash, je crée simplement un clip avec pour largeur et longueur, la largeur et longueur récupérée dans le xml. Quand je load mon image, elle est déformée. Mais mon erreur doit venir de VB et pas de flash.

Est-ce que je m'y prends mal ?
Merci beaucoup d'avance,

Mailys
Gobillot 3140 Messages postés vendredi 14 mai 2004Date d'inscription 31 mars 2015 Dernière intervention - 1 avril 2005 à 12:47
0
Utile
l'image se resize automatiquement en gardant les mêmes proportions ?
non je crois pas.
avec la propriété Strech à True, l'image se met aux dimensions du controle donc peut être déformée.

pour aller chercher les vrais dimensions de l'image:

W = ScaleX(FrmLabel.Img.Picture.Width, vbHimetric, vbPixels)
H = ScaleY(FrmLabel.Img.Picture.Height, vbHimetric, vbPixels)

Daniel
mailys6 49 Messages postés lundi 17 février 2003Date d'inscription 1 octobre 2005 Dernière intervention - 1 avril 2005 à 12:50
0
Utile
Autant pour moi,
Ta première méthode fonctionne, c'est bien dans mon Flash qu'il doit y avoir un souci.
Mon image se resize correctement car j'ai mis en place une fonction permettant qu'elle se resize en conservant ses proportions.

Merci beaucoup pour ton aide

Mailys

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.