ScaleY Imprimante

Résolu
Messages postés
232
Date d'inscription
mercredi 25 octobre 2000
Statut
Membre
Dernière intervention
5 octobre 2012
-
Messages postés
232
Date d'inscription
mercredi 25 octobre 2000
Statut
Membre
Dernière intervention
5 octobre 2012
-
Bonjour,
Pourquoi le scaleY change d'une imprimante à une autre ?
printer.ScaleY(1, vbCentimeters, printer.ScaleMode)

d'une imprimante A3 à une autre A4, c'est différent... ?
merci

4 réponses

Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
Tout dépend de la configuration de ton imprimante.
Mais si les 2 sont configurées en A4 Portrait tu devrais obtenir 29.7 en scaleY sur les 2.

Attention aux marges non imprimable des imprimantes qui peuvent fausser les mesures. Certaines n'en ont pas (pas mal de laser), d'autres en ont, et elles peuvent etre importantes (Jet d'encre de 3-4 ans ou plus, notament)

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
Heu t'as pas réfléchi un peu ????

Une feuille A3 c'est pas la même taille qu'une feuille A4. C'est normal que le scaleY en centimetre soit différent.

A4 --> 21x29.7 cm
A3 --> 29.7x42 cm

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Messages postés
232
Date d'inscription
mercredi 25 octobre 2000
Statut
Membre
Dernière intervention
5 octobre 2012

hihihi
Non en fait si j'imprime par exemple un rectangle en fixant une hauteur, le résultat est différent, d'où ma question
lheight = oDest.ScaleY(fUserValue, vbCentimeters, oDest.ScaleMode)
Messages postés
232
Date d'inscription
mercredi 25 octobre 2000
Statut
Membre
Dernière intervention
5 octobre 2012

ok je vais interroger l'imprimante avec cela alors :
    lValue = GetDeviceCaps(m_hDC, PHYSICALOFFSETX)
    fLeft = CSng(lValue) 'Printer.ScaleX(lValue, vbPixels, vbCentimeters)

    lValue = GetDeviceCaps(m_hDC, PHYSICALOFFSETY)
    fTop = CSng(lValue) 'Printer.ScaleY(lValue, vbPixels, vbCentimeters)

    'lValue = GetDeviceCaps(oDest.hdc, HORZSIZE) 'donne la valeur en mm
    'fWidth = oDest.ScaleX(lValue, vbMillimeters, vbPixels)
    'fWidth = lValue / 10 'en cm
    lValue = GetDeviceCaps(m_hDC, HORZRES) 'donne la valeur en px
    fWidth = CSng(lValue)
    '
    'lValue = GetDeviceCaps(oDest.hdc, VERTSIZE) 'donne la valeur en mm
    'fHeight = oDest.ScaleY(lValue, vbMillimeters, vbPixels)
    'fHeight = lValue / 10 'en cm
    lValue = GetDeviceCaps(m_hDC, VERTRES) 'donne la valeur en px
    fHeight = CSng(lValue)

merci