Impression d'un panel en intégrant un Rectangleshape

Signaler
Messages postés
106
Date d'inscription
mardi 19 mai 2015
Statut
Membre
Dernière intervention
8 mai 2020
-
Messages postés
106
Date d'inscription
mardi 19 mai 2015
Statut
Membre
Dernière intervention
8 mai 2020
-
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

Messages postés
6778
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
29 mai 2020
107
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
Messages postés
106
Date d'inscription
mardi 19 mai 2015
Statut
Membre
Dernière intervention
8 mai 2020

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) /
Messages postés
6778
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
29 mai 2020
107
Messages postés
106
Date d'inscription
mardi 19 mai 2015
Statut
Membre
Dernière intervention
8 mai 2020

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.