1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109
|
'Ajouter un TextBox1 sur forme
Imports System.Drawing.Drawing2D
Imports System.Drawing.Printing
Public Class frmImpEtapes
Private WithEvents doc As PrintDocument
Dim PageAjuste As PageSettings
Dim pageSetupDlg As PageSetupDialog
Dim impApercu As PrintPreviewDialog
Dim impDlg As PrintDialog
Dim LargeurPage As Single
Dim HauteurPage As Single
Dim margeGD As Integer
Dim margeHB As Integer
Public Sub New()
' Cet appel est requis par le Concepteur Windows Form.
InitializeComponent()
' Ajoutez une initialisation quelconque après l'appel InitializeComponent().
'taille maxi fenetre
Me.MaximumSize = New Size(640, 480)
btnImprime.Enabled = False
End Sub
' MISE EN PAGE.
Private Sub btnMiseEnPage_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnMiseEnPage.Click
'init doc
doc = New PrintDocument
'init pageAjuste
PageAjuste = New PageSettings
'Init Boite de Dialogue PageSetupDialog
'lui assigne doc et pageAjuste
'permet de recuperer param de mise en page
' si pas de choix on recupere defaultsetting.
pageSetupDlg = New PageSetupDialog
pageSetupDlg.Document = doc
pageSetupDlg.PageSettings = PageAjuste
If pageSetupDlg.ShowDialog = Windows.Forms.DialogResult.OK Then
PageAjuste = pageSetupDlg.PageSettings
'Retrouve Dimension Page et Marges (Unites(1/00 pouces)
margeGD = PageAjuste.Margins.Left
margeHB = PageAjuste.Margins.Top
LargeurPage = PageAjuste.PaperSize.Width
HauteurPage = PageAjuste.PaperSize.Height
'Conversion en Unites(mm) = Unites(1/00 pouces) x25.4mm/100
margeGD = PageAjuste.Margins.Left * 25.4 / 100.0
margeHB = PageAjuste.Margins.Top * 25.4 / 100.0
LargeurPage = LargeurPage * 25.4 / 100.0
HauteurPage = HauteurPage * 25.4 / 100.0
'centrer la page aux marges
'(soustraire marges droite-gauche + marges haute-basse)
If PageAjuste.Landscape Then
Dim temp As Single = LargeurPage
LargeurPage = HauteurPage - 2 * margeGD
HauteurPage = LargeurPage - 2 * margeHB
Else
LargeurPage = LargeurPage - 2 * margeGD
HauteurPage = HauteurPage - 2 * margeHB
End If
Me.TextBox1.Text = TextBox1.Text & LargeurPage.ToString & " X " & HauteurPage.ToString & " mm"
btnImprime.Enabled = True
Else
margeGD = 0
margeHB = 0
LargeurPage = 0
HauteurPage = 0
Me.TextBox1.Text = ""
Exit Sub
End If
End Sub
'BOUTON APERCU
Private Sub btnApercuImpression_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnApercuImpression.Click
'init boite dialogue PrintPreviewDialog
'lui assigne doc
impApercu = New PrintPreviewDialog
impApercu.Document = doc
impApercu.BringToFront()
impApercu.Show()
End Sub
'BOUTON IMPRESSION
Private Sub btnImprime_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnImprime.Click
'init boite dialogue PrintDialog
'lui assigne doc
impDlg = New PrintDialog
If impDlg.ShowDialog = Windows.Forms.DialogResult.OK Then
impDlg.Document = doc
'imprime
doc.Print()
Else
Exit Sub
End If
btnImprime.Enabled = False
End Sub
'HANDLER DU DOCUMENT DOC (ESPECE DE ONPAINT)
'DESSINER LE TEXTE,DES GRAPHES ETC.......
Private Sub Doc_PrintPage(ByVal sender As System.Object, _
ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles _
doc.PrintPage
'dessine un rectangle dans coin top/left à la marge
e.Graphics.DrawRectangle(Pens.Aquamarine, margeGD, margeHB, 100, 100)
' ----- Limite sortie à une seule page.
e.HasMorePages = False
End Sub
End Class |
Partager