Centrer une image à l'impression

Cjvg Messages postés 330 Date d'inscription mercredi 6 décembre 2000 Statut Membre Dernière intervention 26 octobre 2017 - 23 déc. 2012 à 16:17
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 24 déc. 2012 à 14:53
Bonjour,

Je n'ai pas trouvé la bonne formule pour centrer correctement une image avec Printer.paintPicture.

J'ai des images de dimensions différentes qui peuvent toutes s'imprimer sur une page 21x29.7.

Auriez vous la formule générale de calcul qui me permette de centrer correctement chacune de mes images(calcul de XXX et YYY).

Printer.paintpicture Picture1,XXX,YYY)

Par avance Merci.

9 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
23 déc. 2012 à 18:34
Bonjour,
Centrer par rapport à quoi, très exactement ?
Si par rapport à la feuille d'impression, le traitement est exactement le même que celui que l'on ferait pour centrer une image sur un Form.
Mais j'attends d'abord la réponse à ma question.



________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
23 déc. 2012 à 18:49
Regarde ce que ferait ceci :
Private Sub Command1_Click()
  Me.PaintPicture Picture1.Image, (Me.Width - Picture1.Width) / 2, (Me.Height - Picture1.Height) / 2, Picture1.Width, Picture1.Height
  Picture1.Visible = False
End Sub

Le principe est le même avec l'objet Printer.
Attention, toutefois, aux conversions éventuelles d'échelles (celle de ton Printer et celle de ta picturebox) qui t'obligeront, si pas les mêmes, à utiliser ScaleX, ScaleY et Scalemode.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
Cjvg Messages postés 330 Date d'inscription mercredi 6 décembre 2000 Statut Membre Dernière intervention 26 octobre 2017
23 déc. 2012 à 18:51
Bonjour Mr Ucfoutu,

Pour centrer l'image au milieu de la feuille de papier.
Marge gauche identique à marge droite et marge Haute identique à marge basse.

Merci
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
23 déc. 2012 à 19:00
Si les deux marges sont identiques, cela revient donc à centrer par rapport à la feuille elle-même.
Tu as donc déjà ta réponse, dans laquelle Me est à remplacer par Printer
Attention toutefois (rappel) aux échelles. Transpositions nécessaires si non identiques.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Cjvg Messages postés 330 Date d'inscription mercredi 6 décembre 2000 Statut Membre Dernière intervention 26 octobre 2017
23 déc. 2012 à 19:39
Printer.Orientation = 1
Printer.ScaleMode = 6
Picture1.ScaleMode = 6
Printer.Copies = 1
Printer.PaperSize = vbPRPSUser

Printer.PaintPicture Picture1.Image, (Printer.Width - Picture1.Width) / 2, (Printer.Height - Picture1.Height) / 2, Picture1.Width, Picture1.Height

Printer.EndDoc


Ci-joint la source pour mieux comprendre mon problème
Avec le paintpicture modifié, je n'ai plus d'impression.
0
Utilisateur anonyme
23 déc. 2012 à 20:04
__________B___
|   |        |   Dessine ton problème sur une feuille de papier
|   y        |   et écris les relations. Tu verras c'est plus   
|-x ---c--   |   simple.
|   |    d   |
|   ------   |   x = (B - c) - ((B - c) / 2)
A            |   y = (A - d) - ((A - d) / 2)
|            |
|____________|  Fais ensuite la transposition pour le code.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
23 déc. 2012 à 21:48
Bonjour, banana32.
Je crois que Cjvg a compris ce calcul-là
La complexité est ailleurs que dans ce calcul.
A Cjvg :
Ceci :
Private Sub Command1_Click()
 
 Me.PaintPicture Picture1.Image, (Me.ScaleWidth - ScaleX(Picture1.ScaleWidth, Picture1.ScaleMode, Me.ScaleMode)) / 2, _
 (Me.ScaleHeight - ScaleY(Picture1.ScaleHeight, Picture1.ScaleMode, Me.ScaleMode)) / 2 ', Picture1.Width, Picture1.Height

End Sub

que je viens de tester avec différentes échelles sur un Form (je n'ai pas d'imprimante branchée pour essayer avec l'objet Printer) devrait faire l'affaire
Toi, remplace donc Me par Printer
Dis-moi si OK...
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
Cjvg Messages postés 330 Date d'inscription mercredi 6 décembre 2000 Statut Membre Dernière intervention 26 octobre 2017
24 déc. 2012 à 10:02
Bonjour,

Désolé,ça ne marche, aucune impression.

j'ai lançé dans la foulée le code ci-dessous. Il imprime correctement mais ne peut-être
utilisé avec des images de tailles différentes.




If Picture1.Width > Picture1.Height Then
EspaceGauche = 0
Espacedroite = 25
Else
EspaceGauche = 25
Espacedroite = 50
End If

Printer.Orientation = 1 ' 2 Impresssion Paysage
Printer.ScaleMode = 6 'Millimetres
Picture1.ScaleMode = 6
'Printer.PrintQuality = vbPRPQHigh
Printer.Copies = 1
Printer.PaperSize = vbPRPSUser
Printer.PaintPicture Picture1, EspaceGauche, Espacedroite
Printer.EndDoc
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
24 déc. 2012 à 14:53
Je veux bien brancher une imprimante et y voir ainsi plus clair, mais :
- il va falloir que tu expliques cette notion nouvelle :
mais ne peut-être utilisé avec des images de tailles différentes

que je comprends d'autant plus mal que tu n'utilises dans ton PaintPicture aucun des paramètres de redimensionnement éventuel !


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
Rejoignez-nous