En clair, twips et pixels ?

Résolu
mailys6 Messages postés 49 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 1 octobre 2005 - 1 avril 2005 à 11:29
mailys6 Messages postés 49 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 1 octobre 2005 - 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

4 réponses

Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
1 avril 2005 à 11:59
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
3
mailys6 Messages postés 49 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 1 octobre 2005
1 avril 2005 à 12:33
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
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
1 avril 2005 à 12:47
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
0
mailys6 Messages postés 49 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 1 octobre 2005
1 avril 2005 à 12:50
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
0
Rejoignez-nous