OVH Cloud OVH Cloud

Précisions sur currentX et CuurentY dans l'object printer..

2 réponses
Avatar
Driss HANIB
Bonjour à tous,

dans la cadre d'un print preview j'utilise un picturebox pour l'aperçu et
donc l'objet printer pour l'impression.
je constate que lorsque je fais une impression directe, j'ai un décalage par
rapport au picturebox

aussi je voudrai savoir à partir de quelpoint de la feuille, sous l'objet
printer se définissent les propriétés CurrentX et CurrentY ?
- est-ce par rapport au coin en haut et à gauche de la FEUILLE
- est-ce par rapport au coin en haut et à gauche de la ZONE IMPRIMABLE ?

- autre version ?

a priori , vu le décalage, je dirai la seconde réponse, mais je voudrai
avoir un avis définitf avant de faire la correction par rapport aux marges
non imprimables

Merci

Driss

2 réponses

Avatar
Jean-marc
"Driss HANIB" wrote in message
news:
Bonjour à tous,

dans la cadre d'un print preview j'utilise un picturebox pour l'aperçu et
donc l'objet printer pour l'impression.
je constate que lorsque je fais une impression directe, j'ai un décalage
par
rapport au picturebox

aussi je voudrai savoir à partir de quelpoint de la feuille, sous l'objet
printer se définissent les propriétés CurrentX et CurrentY ?
- est-ce par rapport au coin en haut et à gauche de la FEUILLE
- est-ce par rapport au coin en haut et à gauche de la ZONE IMPRIMABLE ?

- autre version ?



Hello Driss,

La documentation a l'air de dire que CurrentX c'est
le "COIN SUPERIEUR GAUCHE" :
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbcon98/html/vbconprintingwithprinterobject.asp

Mais en fonction du modèle d'imprimante, j'ai toujours obtenu
des résultats un peu différents.

En tout cas, ce n'est pas stricto sensu la zone imprimable
(en tout cas pas avec l'imprimante que j'ai testé ici) car

Printer.CurrentX = 0
Printer.CurrentY = 0
Printer.Line -(1000, 1000), 0, B

ne me dessine que le bas et les cotés du carré

mon impression (surement fausse, ou alors vraie sur mon imprimante
seulement):
Le Current X = 0 donne le zéro de la zone imprimable
Le current Y = 0 donne le "zéro" de la feuille (en dehors de
la zone imprimable).

Ca a l'air débile, hein? Mais faisons l'expérience suivante:

Si je fais Printer.line (0,0)-(1000,1000) j'obtiens une diagonale.
Si je la prolonge vers le haut, je coupe le bord supérieur à
une abcisse qui est précisément le 0 de la zone imprimable.

=> mon currentX = 0 définit bien le 0 de la zone imprimable.

Etrange .....

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
mailto: remove '_no_spam_' ;
FAQ VB: http://faq.vb.free.fr/
Avatar
Driss HANIB
Salut Jean Marc

Pour ma part (su une imprimante TOSHIBA)
lorsque tu veux imprimer un texte

tu marques
printer.currentX=0
printer.currentY= 0
Printer.print "HHH"
je constate que cela correspond à peu près aux 0,0 de la zone imprimable..

Quoi que le X=0 de la zone imprimable est pour moi légèrement inféreieure à
la valeur calculée de la zone non imprimable gauche (obtenue par
GETDEVICECAPS() et convertie en millimètres/centimètres.
Pour le Y , la correspondance est meilleure.
Meme chose si j'utilise comme imprimante PDFWriter d'Adobe..
je vais donc corriger mes coordonnées (X,Y) lors du passage sur l'imprimante
en déduisant la zone non imprimable de toutes mes coordonnées.

pour la commande Line, pour ma part j'obtiens le même écart correspondant à
la zone non imprimable..: les 0 semblent ceux de la zone imprimable..

Driss

"Jean-marc" a écrit dans le message de
news:ep50d9$u1p$

"Driss HANIB" wrote in message
news:
> Bonjour à tous,
>
> dans la cadre d'un print preview j'utilise un picturebox pour l'aperçu


et
> donc l'objet printer pour l'impression.
> je constate que lorsque je fais une impression directe, j'ai un décalage
> par
> rapport au picturebox
>
> aussi je voudrai savoir à partir de quelpoint de la feuille, sous


l'objet
> printer se définissent les propriétés CurrentX et CurrentY ?
> - est-ce par rapport au coin en haut et à gauche de la FEUILLE
> - est-ce par rapport au coin en haut et à gauche de la ZONE IMPRIMABLE ?
>
> - autre version ?

Hello Driss,

La documentation a l'air de dire que CurrentX c'est
le "COIN SUPERIEUR GAUCHE" :



http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbcon98/html/vbconprintingwithprinterobject.asp

Mais en fonction du modèle d'imprimante, j'ai toujours obtenu
des résultats un peu différents.

En tout cas, ce n'est pas stricto sensu la zone imprimable
(en tout cas pas avec l'imprimante que j'ai testé ici) car

Printer.CurrentX = 0
Printer.CurrentY = 0
Printer.Line -(1000, 1000), 0, B

ne me dessine que le bas et les cotés du carré

mon impression (surement fausse, ou alors vraie sur mon imprimante
seulement):
Le Current X = 0 donne le zéro de la zone imprimable
Le current Y = 0 donne le "zéro" de la feuille (en dehors de
la zone imprimable).

Ca a l'air débile, hein? Mais faisons l'expérience suivante:

Si je fais Printer.line (0,0)-(1000,1000) j'obtiens une diagonale.
Si je la prolonge vers le haut, je coupe le bord supérieur à
une abcisse qui est précisément le 0 de la zone imprimable.

=> mon currentX = 0 définit bien le 0 de la zone imprimable.

Etrange .....

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
mailto: remove '_no_spam_' ;
FAQ VB: http://faq.vb.free.fr/