Mon application dessine des graphiques dans un métafichier Windows. Les utilisateurs doivent être en mesure d'imprimer les graphiques bien centrés sur la page. Réduction rapide du code d'impression:Pourquoi ne puis-je pas centrer une image sur une page pour l'imprimer dans VB.NET?
Private Sub PrintPage(ByVal sender As Object, ByVal e As PrintPageEventArgs)
Dim header As Imaging.MetafileHeader = metafile.GetMetafileHeader()
Dim sz As New SizeF(100 * header.Bounds.Width/header.DpiX, 100 * header.Bounds.Height/header.DpiY)
Dim p As New PointF((e.PageBounds.Width - sz.Width)/2, (e.PageBounds.Height - sz.Height)/2)
e.Graphics.DrawImage(metafile, p)
End Sub
Si j'imprime sur un document PDF, cela semble parfait. Mais si j'imprime sur une imprimante réelle, elle est décentrée, à environ 1/8 de pouce vers le bas et vers la droite. Je l'ai fait une expérience rapide pour voir où les PageBounds étaient en faisant
e.Graphics.DrawRectangle(Pens.Red, e.PageBounds)
et les résultats étaient les mêmes, légèrement décentré. Sur le PDF, cela dessine un rectangle sur le bord même de la page. Pour ce que ça vaut, j'ai testé sur un Toshiba e-Studio 3510c et un HP LaserJet 4000 avec les mêmes résultats. Toute aide est appréciée, cela me tourmente depuis des semaines.
Mise à jour:
J'ai fini à l'aide e.PageSettings.PrintableArea, mais il semble que e.Graphics.VisibleClipBounds vous obtient les mêmes valeurs que par la réponse de xpda.