Impression d'un panel en intégrant un Rectangleshape

jerlo11 Messages postés 109 Date d'inscription mardi 19 mai 2015 Statut Membre Dernière intervention 17 novembre 2022 - 19 mai 2015 à 15:02
jerlo11 Messages postés 109 Date d'inscription mardi 19 mai 2015 Statut Membre Dernière intervention 17 novembre 2022 - 23 mai 2015 à 21:44
Bonjour à tous ami(e)s développeur

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 :

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


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,

4 réponses

cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
19 mai 2015 à 15:52
Bonjour,

Je te propose une capture de ton panel avec tout ce qui s'y trouve. Ensuite tu imprimes ton image. Cela se fait en 2 temps, c'est l'inconvénient. enfin si tu ne trouves pas mieux:

http://codes-sources.commentcamarche.net/source/54783-capture-de-controles
0
jerlo11 Messages postés 109 Date d'inscription mardi 19 mai 2015 Statut Membre Dernière intervention 17 novembre 2022
22 mai 2015 à 08:26
hello,
J'aurai souhaiter conserver mon bout de code qui fonctionne super bien pour imprimer la totalité d'un panel meme avec un scrollbar et uniquement y intégrer le rectangle shape dans le style :

If TypeOf ctrl Is TextBox Or TypeOf ctrl Is Label Or TypeOf ctrl Is PictureBox Or TypeOf ctrl Is Rectangleshape Then 
ctrl.Tag = Int((ctrl.Top + ctrl.Height) /
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
23 mai 2015 à 12:19
0
jerlo11 Messages postés 109 Date d'inscription mardi 19 mai 2015 Statut Membre Dernière intervention 17 novembre 2022
23 mai 2015 à 21:44
Oui oui j'ai déja parcouru il y a peu ces tutos mais je n'y ai rien trouver sur ce que je souhaite imprimer.
0
Rejoignez-nous