impression d'un panel avec des rectangleshape
Bonjour à tous ami(e)s dévelopeur :)
Je recherche en vain une solution pour imprimer mon panel avec la prise en charges des rectangleshape, j'ai beau chercher là je ne n'ai plus de piste :(
J'arrive pour le moment à imprimer mon panel avec du texte et des images avec mon bout de code ci-dessous.
Sur la form j'utilise un "PrintForm1" et un "PrintDocument1".
Quand je clic sur mon bouton impression :
Code:
1 2 3 4 5 6 7
| Private Sub BarButtonItem4_ItemClick(ByVal sender As System.Object, ByVal e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem4.ItemClick
'Imprimer le récap
Panel8.VerticalScroll.Value = 0
PrintDocument1.Print()
End Sub |
Code pour la prise en charge de l'impression du panel avec texte et image
Code:
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
| Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
Static page As Integer = 1
Dim startPosition As Integer = (page - 1) * PrintDocument1.DefaultPageSettings.Bounds.Height
Static maxPages As Integer = 0
If page = 1 Then
For Each ctrl As Control In Me.Panel8.Controls
If TypeOf ctrl Is TextBox Or TypeOf ctrl Is Label Or TypeOf ctrl Is PictureBox Then
ctrl.Tag = Int((ctrl.Top + ctrl.Height) / PrintDocument1.DefaultPageSettings.Bounds.Height) + 1
If CInt(ctrl.Tag) > maxPages Then maxPages = CInt(ctrl.Tag)
End If
Next
End If
For Each ctrl As Control In Me.Panel8.Controls
If CInt(ctrl.Tag) = page Then
If TypeOf ctrl Is TextBox Or TypeOf ctrl Is Label Then
Dim sf As New System.Drawing.StringFormat
If TypeOf ctrl Is TextBox Then
If DirectCast(ctrl, TextBox).TextAlign = HorizontalAlignment.Right Then
sf.Alignment = StringAlignment.Far
Else
sf.Alignment = StringAlignment.Near
End If
ElseIf TypeOf ctrl Is Label Then
If DirectCast(ctrl, Label).TextAlign = ContentAlignment.TopLeft Then
sf.Alignment = StringAlignment.Near
ElseIf DirectCast(ctrl, Label).TextAlign = ContentAlignment.TopRight Then
sf.Alignment = StringAlignment.Far
End If
End If
sf.FormatFlags = StringFormatFlags.NoClip
e.Graphics.DrawString(ctrl.Text, ctrl.Font, New SolidBrush(ctrl.ForeColor), New RectangleF(ctrl.Left, ctrl.Top - startPosition, ctrl.Width + 50, ctrl.Height), sf)
ElseIf TypeOf ctrl Is PictureBox Then
e.Graphics.DrawImage(DirectCast(ctrl, PictureBox).Image, New RectangleF(ctrl.Left, ctrl.Top - startPosition, ctrl.Width, ctrl.Height))
ElseIf TypeOf ctrl Is Label Then
e.Graphics.DrawString(Me.Text, Me.Font, Brushes.DarkBlue, New RectangleF(ctrl.Left, ctrl.Top - startPosition, ctrl.Width, ctrl.Height))
End If
End If
Next
page += 1
If page > maxPages Then
e.HasMorePages = False
page = 1
maxPages = 0
Else
e.HasMorePages = True
End If
End Sub |
J'aimerai dans ce dernier bout de code pouvoir imprimer également des RectangleShape est-ce que cela en est possible ??
Merci à toute les personnes qui pourrai m'aider.
Vous remerciant par avance,