none
Impression d'un Form RRS feed

  • Question

  • Bonjour,j'ai crée un Form qui contient un DataGrid et je souhaite l'imprimer.

    Le code que je possède marche parfaitement tant que l'on ne redimensionne pas le Form.

    Dans ce cas, je suis j'ai un form plus large que et lorsque j'imprime il me manque la derniere colonne; alors dans mon code, j'ai bien déclaré la taille de la capture comme :

    Size = Me.Size

    Je vous joint les pièces jointes concernées. Merci

    Imports System
    Imports System.Windows.Forms
    Imports System.Drawing
    Imports System.Drawing.Printing
    
    Public Class Form1
        Inherits Form
        Private WithEvents printDocument1 As New PrintDocument
    
        Dim memoryImage As Bitmap
    
        Private Sub CaptureScreen()
            Dim myGraphics As Graphics = Me.CreateGraphics()
            Dim s As Size = Me.Size
            memoryImage = New Bitmap(s.Width, s.Height, myGraphics)
            Dim memoryGraphics As Graphics = Graphics.FromImage(memoryImage)
            memoryGraphics.CopyFromScreen(Me.Location.X, Me.Location.Y, 0, 0, s)
        End Sub
    
        Private Sub printDocument1_PrintPage(ByVal sender As System.Object, _
           ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles _
           printDocument1.PrintPage
            e.Graphics.DrawImage(memoryImage, 0, 0)
        End Sub
    
        Private Sub printButton_Click(ByVal sender As System.Object, ByVal e As  _
           System.EventArgs) Handles printButton.Click
            CaptureScreen()
            printDocument1.Print()
        End Sub
    
        Public Shared Sub Main()
            Application.Run(New Form1())
        End Sub

    de votre aide

    dimanche 14 juin 2015 05:07

Réponses

  • Bonjour,

    LandscapeAngle est en lecture seule.

    Pour ce qui est de l'orientation du document, je n'ai pas beaucoup testé mais un rapide coup d'œil dans l'aide m'encourage à penser qu'on peut s'y prendre comme ça :

        PageSetupDialog psd = new PageSetupDialog();
        psd.PrinterSettings = new System.Drawing.Printing.PrinterSettings();
        psd.PageSettings = new System.Drawing.Printing.PageSettings(psd.PrinterSettings);
        psd.PageSettings.Landscape = true;
        psd.ShowDialog();
        printDocument1.PrinterSettings  = psd.PrinterSettings;

    ShowDialog n'est pas obligatoire, ça permet de visualiser les paramétrages.

    J'ai fait le test (de correction de syntaxe) dans un projet csharp, donc il faut retirer les points-virgules à la fin des lignes et réécrire les déclarations (par exemple Dim psd as new PageSetupDialog).

    Pour des documents à imprimer il y a le ReportViewer, aussi. Mais il faut commencer par préparer un état, c'est une autre approche.


    mardi 14 juillet 2015 13:04

Toutes les réponses

  • Bonjour, je souhaite imprimer un form mais son format fait que je devrait l'imprimer en mode paysage.

    J'ai essayer d'insérer l'instruction "LandscapeAngle" dans le code ci-joint mais cela ne fonctionne pas.

    je ne dois pas l'insérer comme il faut.

    Merci de votre aide

    Imports System
    Imports System.Windows.Forms
    Imports System.Drawing
    Imports System.Drawing.Printing
    
    Public Class Form1
        Inherits Form
        Private WithEvents printDocument1 As New PrintDocument
    
        Dim memoryImage As Bitmap
    
        Private Sub CaptureScreen()
            Dim myGraphics As Graphics = Me.CreateGraphics()
            Dim s As Size = Me.Size
            memoryImage = New Bitmap(s.Width, s.Height, myGraphics)
            Dim memoryGraphics As Graphics = Graphics.FromImage(memoryImage)
            memoryGraphics.CopyFromScreen(Me.Location.X, Me.Location.Y, 0, 0, s)
        End Sub
    
        Private Sub printDocument1_PrintPage(ByVal sender As System.Object, _
           ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles _
           printDocument1.PrintPage
            e.Graphics.DrawImage(memoryImage, 0, 0)
        End Sub
    
        Private Sub printButton_Click(ByVal sender As System.Object, ByVal e As  _
           System.EventArgs) Handles printButton.Click
            CaptureScreen()
            printDocument1.Print()
        End Sub
    
        Public Shared Sub Main()
            Application.Run(New Form1())
        End Sub

    lundi 15 juin 2015 05:23
  • Bonjour,

    LandscapeAngle est en lecture seule.

    Pour ce qui est de l'orientation du document, je n'ai pas beaucoup testé mais un rapide coup d'œil dans l'aide m'encourage à penser qu'on peut s'y prendre comme ça :

        PageSetupDialog psd = new PageSetupDialog();
        psd.PrinterSettings = new System.Drawing.Printing.PrinterSettings();
        psd.PageSettings = new System.Drawing.Printing.PageSettings(psd.PrinterSettings);
        psd.PageSettings.Landscape = true;
        psd.ShowDialog();
        printDocument1.PrinterSettings  = psd.PrinterSettings;

    ShowDialog n'est pas obligatoire, ça permet de visualiser les paramétrages.

    J'ai fait le test (de correction de syntaxe) dans un projet csharp, donc il faut retirer les points-virgules à la fin des lignes et réécrire les déclarations (par exemple Dim psd as new PageSetupDialog).

    Pour des documents à imprimer il y a le ReportViewer, aussi. Mais il faut commencer par préparer un état, c'est une autre approche.


    mardi 14 juillet 2015 13:04