OVH Cloud OVH Cloud

Imprimer 1 image (position) ???

5 réponses
Avatar
X
Bonjour,

Je cherche à imprimer une image (picture), à la POSITION COURANTE de
l'impression papier, or je ne sais comment, voici ce que j'ai fait:

Printer.ScaleMode = vbCentimeters
Printer.PaintPicture Picture1.Image, 10, 22 ' signature

MAIS... mais... à la place de 50,22, il faudrait que je puisse indiquer
courantX, courantY, car l'image peut varier en hauteur sur le papier,
comment faire svp ???

--
Merci.
--
Joseph Attila PUSZTAY, romancier, auteur de logiciels...
---
ECRIRE
http://irolog.free.fr/ecrire/index.htm

LOGICIELS
http://irolog.free.fr

SITE
http://irolog.free.fr/joe/index.htm

FAQ VB
http://faq.vb.free.fr

PRINCIPE D'UTILISATION DES NEWSGROUPS
http://support.microsoft.com/directory/worldwide/fr/newsgroup/regles.htm
********************************************************

5 réponses

Avatar
Driss HANIB
si tu as utilisés la commande printer.print

les proriétés currentX et currentY sont mis à jour, mais ils correspondent
au coin 'en bas à droite de ta dernière écriture, ou du saut de ligne si tu
en as mis 1.
il faut donc malgré tout rajouter un décalage (par exemple 0,5 si tu est en
cm) au moins sur le currentY qui est la position 'verticale' de ta fin de
ligne.
de plus comme ton exemple semble être une signature, il faut sans doute
centrer celle ci : il faut donc prendre la largeur de ta feuille , retirer
la largeur (en cm) de ta signature et diviser par 2.
après, à toi d'affiner pour mettre le bon décalage, tout en gérant le fait
que ce que tu écris, peut se trouver en bas de la zone imprimable de ton
imprimante et que tu risques, soit de perdre une partie de ta signature,
soit d'avoir un saut de page intempestif avec ta signature sur la page
suivante..

hth

Driss

"X" <.> a écrit dans le message de
news:%
Bonjour,

Je cherche à imprimer une image (picture), à la POSITION COURANTE de
l'impression papier, or je ne sais comment, voici ce que j'ai fait:

Printer.ScaleMode = vbCentimeters
Printer.PaintPicture Picture1.Image, 10, 22 ' signature

MAIS... mais... à la place de 50,22, il faudrait que je puisse


indiquer
courantX, courantY, car l'image peut varier en hauteur sur le papier,
comment faire svp ???

--
Merci.
--
Joseph Attila PUSZTAY, romancier, auteur de logiciels...
---
ECRIRE
http://irolog.free.fr/ecrire/index.htm

LOGICIELS
http://irolog.free.fr

SITE
http://irolog.free.fr/joe/index.htm

FAQ VB
http://faq.vb.free.fr

PRINCIPE D'UTILISATION DES NEWSGROUPS
http://support.microsoft.com/directory/worldwide/fr/newsgroup/regles.htm
********************************************************




Avatar
X
Bonsoir,

Merci, je vais voir avec ce que tu m'as dit, sinon, pas de risque de
sauter une feuille, je compte les lignes, et je maîtrise ainsi le moment où
je veux sauter :o)



"Driss HANIB" a écrit dans le message de news:

| si tu as utilisés la commande printer.print
|
| les proriétés currentX et currentY sont mis à jour, mais ils correspondent
| au coin 'en bas à droite de ta dernière écriture, ou du saut de ligne si
tu
| en as mis 1.
| il faut donc malgré tout rajouter un décalage (par exemple 0,5 si tu est
en
| cm) au moins sur le currentY qui est la position 'verticale' de ta fin de
| ligne.
| de plus comme ton exemple semble être une signature, il faut sans doute
| centrer celle ci : il faut donc prendre la largeur de ta feuille , retirer
| la largeur (en cm) de ta signature et diviser par 2.
| après, à toi d'affiner pour mettre le bon décalage, tout en gérant le fait
| que ce que tu écris, peut se trouver en bas de la zone imprimable de ton
| imprimante et que tu risques, soit de perdre une partie de ta signature,
| soit d'avoir un saut de page intempestif avec ta signature sur la page
| suivante..
|
| hth
|
| Driss
|
| "X" <.> a écrit dans le message de
| news:%
| > Bonjour,
| >
| > Je cherche à imprimer une image (picture), à la POSITION COURANTE de
| > l'impression papier, or je ne sais comment, voici ce que j'ai fait:
| >
| > Printer.ScaleMode = vbCentimeters
| > Printer.PaintPicture Picture1.Image, 10, 22 ' signature
| >
| > MAIS... mais... à la place de 50,22, il faudrait que je puisse
| indiquer
| > courantX, courantY, car l'image peut varier en hauteur sur le papier,
| > comment faire svp ???
| >
| > --
| > Merci.
| > --
| > Joseph Attila PUSZTAY, romancier, auteur de logiciels...
| > ---
| > ECRIRE
| > http://irolog.free.fr/ecrire/index.htm
| >
| > LOGICIELS
| > http://irolog.free.fr
| >
| > SITE
| > http://irolog.free.fr/joe/index.htm
| >
| > FAQ VB
| > http://faq.vb.free.fr
| >
| > PRINCIPE D'UTILISATION DES NEWSGROUPS
| > http://support.microsoft.com/directory/worldwide/fr/newsgroup/regles.htm
| > ********************************************************
| >
| >
|
|
Avatar
X
Bon, après essai, CurrentX, Y ne semblent pas répondre avec:

Printer.ScaleMode = vbCentimeters ' signature
Printer.PaintPicture Picture1.Image, 10, 25 ' ICI

Si tu as une autre idée :o) ???




"Driss HANIB" a écrit dans le message de news:

| si tu as utilisés la commande printer.print
|
| les proriétés currentX et currentY sont mis à jour, mais ils correspondent
| au coin 'en bas à droite de ta dernière écriture, ou du saut de ligne si
tu
| en as mis 1.
| il faut donc malgré tout rajouter un décalage (par exemple 0,5 si tu est
en
| cm) au moins sur le currentY qui est la position 'verticale' de ta fin de
| ligne.
| de plus comme ton exemple semble être une signature, il faut sans doute
| centrer celle ci : il faut donc prendre la largeur de ta feuille , retirer
| la largeur (en cm) de ta signature et diviser par 2.
| après, à toi d'affiner pour mettre le bon décalage, tout en gérant le fait
| que ce que tu écris, peut se trouver en bas de la zone imprimable de ton
| imprimante et que tu risques, soit de perdre une partie de ta signature,
| soit d'avoir un saut de page intempestif avec ta signature sur la page
| suivante..
|
| hth
|
| Driss
|
| "X" <.> a écrit dans le message de
| news:%
| > Bonjour,
| >
| > Je cherche à imprimer une image (picture), à la POSITION COURANTE de
| > l'impression papier, or je ne sais comment, voici ce que j'ai fait:
| >
| > Printer.ScaleMode = vbCentimeters
| > Printer.PaintPicture Picture1.Image, 10, 22 ' signature
| >
| > MAIS... mais... à la place de 50,22, il faudrait que je puisse
| indiquer
| > courantX, courantY, car l'image peut varier en hauteur sur le papier,
| > comment faire svp ???
| >
| > --
| > Merci.
| > --
| > Joseph Attila PUSZTAY, romancier, auteur de logiciels...
| > ---
| > ECRIRE
| > http://irolog.free.fr/ecrire/index.htm
| >
| > LOGICIELS
| > http://irolog.free.fr
| >
| > SITE
| > http://irolog.free.fr/joe/index.htm
| >
| > FAQ VB
| > http://faq.vb.free.fr
| >
| > PRINCIPE D'UTILISATION DES NEWSGROUPS
| > http://support.microsoft.com/directory/worldwide/fr/newsgroup/regles.htm
| > ********************************************************
| >
| >
|
|
Avatar
Driss HANIB
Si cela marche très bien ! pour preuve

ouvre un nouveau projet. dans la feuille met un bouton (command1) et un
picturebox (picture1)
ce picturebox tu mets le scalemode à vbcentimeters et tu mets une image
dedans

et tu mets

comme source

' **** début du source
Private Sub Command1_Click()
Dim CX As Single
Dim CY As Single

Printer.ScaleMode = vbCentimeters

With Printer
.CurrentX = 3
.CurrentY = 5
Printer.Print "Ceci est un essai d'impression" & vbCrLf
CX = .CurrentX
CY = .CurrentY
'on repositionne
.CurrentX = 3
Printer.Print "Après impression de la première ligne, CurrX = " &
CStr(CX) & " et curY = " & CStr(CY)
' impression d'un graphique
' on récupère par exemple la largeur du graphique
' bien mettre le scalemode du picturebox à vbcentimeters !!
.CurrentX = (.ScaleWidth - Picture1.ScaleWidth) / 2
.CurrentY = .CurrentY + 1
.PaintPicture Picture1.Image, .CurrentX, .CurrentY
.EndDoc
End With

End Sub

' fin du source

et tu essaies



"X" <.> a écrit dans le message de
news:%23MjT74$
Bon, après essai, CurrentX, Y ne semblent pas répondre avec:

Printer.ScaleMode = vbCentimeters ' signature
Printer.PaintPicture Picture1.Image, 10, 25 ' ICI

Si tu as une autre idée :o) ???



Avatar
X
Bonsoir,

Merci, grâce à ta réponse, j'ai un peu plus cherché, et j'ai trouvé tout
simple:

Line Input #p4a, ligne ' signature
If Len(ligne) <> 0 Then Picture1.Picture = LoadPicture(ligne)

Printer.ScaleMode = vbCentimeters
Printer.PaintPicture Picture1.Image, 10, Printer.CurrentY

Ça marche, fallait en fait associer printer.currentY
Merci :o)




"Driss HANIB" a écrit dans le message de news:

| Si cela marche très bien ! pour preuve
|
| ouvre un nouveau projet. dans la feuille met un bouton (command1) et un
| picturebox (picture1)
| ce picturebox tu mets le scalemode à vbcentimeters et tu mets une image
| dedans
|
| et tu mets
|
| comme source
|
| ' **** début du source
| Private Sub Command1_Click()
| Dim CX As Single
| Dim CY As Single
|
| Printer.ScaleMode = vbCentimeters
|
| With Printer
| .CurrentX = 3
| .CurrentY = 5
| Printer.Print "Ceci est un essai d'impression" & vbCrLf
| CX = .CurrentX
| CY = .CurrentY
| 'on repositionne
| .CurrentX = 3
| Printer.Print "Après impression de la première ligne, CurrX = " &
| CStr(CX) & " et curY = " & CStr(CY)
| ' impression d'un graphique
| ' on récupère par exemple la largeur du graphique
| ' bien mettre le scalemode du picturebox à vbcentimeters !!
| .CurrentX = (.ScaleWidth - Picture1.ScaleWidth) / 2
| .CurrentY = .CurrentY + 1
| .PaintPicture Picture1.Image, .CurrentX, .CurrentY
| .EndDoc
| End With
|
| End Sub
|
| ' fin du source
|
| et tu essaies
|
|
|
| "X" <.> a écrit dans le message de
| news:%23MjT74$
| > Bon, après essai, CurrentX, Y ne semblent pas répondre avec:
| >
| > Printer.ScaleMode = vbCentimeters ' signature
| > Printer.PaintPicture Picture1.Image, 10, 25 ' ICI
| >
| > Si tu as une autre idée :o) ???
| >
|
|
|