IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Problème de redimensionnement de la capture écran avant impression


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    257
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juin 2010
    Messages : 257
    Par défaut Problème de redimensionnement de la capture écran avant impression
    Bonjour,

    J'ai un souci au niveau de l'impression d'une capture écran, en fait je souhaite capturer toute la form qui est ouverte donc il me faudrait redimensionner ma form pour qu'elle rentre sur ma feuille mais je ne sais pas comment faire pouvez-vous m'aider please ??

    je vous mais le code de l'apercu avant impression:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     Private Sub Apercu_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton4.Click
     
            Dim dllg As New PrintPreviewDialog
     
            CaptureScreen()
     
            dllg.Width = 1275
            dllg.Height = 850
     
            dllg.Document = PrintDocument1
     
            dllg.ShowDialog()
     
        End Sub
    Ainsi que celui de la capture ecran :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     Private Declare Function BitBlt Lib "gdi32.dll" Alias "BitBlt" (ByVal hdcDest As IntPtr, ByVal nXDest As Integer, ByVal nYDest As Integer, ByVal nWidth As Integer, ByVal nHeight As Integer, ByVal hdcSrc As IntPtr, ByVal nXSrc As Integer, ByVal nYSrc As Integer, ByVal dwRop As System.Int32) As Long
        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)
            Dim dc1 As IntPtr = mygraphics.GetHdc
            Dim dc2 As IntPtr = memoryGraphics.GetHdc
            BitBlt(dc2, 0, 0, Me.ClientRectangle.Width, Me.ClientRectangle.Height, dc1, 0, 0, 13369376)
            mygraphics.ReleaseHdc(dc1)
            memoryGraphics.ReleaseHdc(dc2)
        End Sub
    et celui pour imprimer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     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 Imprimer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton2.Click
     
            Dim dlg As New PrintDialog
     
            CaptureScreen()
     
            dlg.Document = PrintDocument1
     
            Dim result As DialogResult = dlg.ShowDialog()
     
            If (result = System.Windows.Forms.DialogResult.OK) Then
     
                PrintDocument1.Print()
     
            End If
     
        End Sub

  2. #2
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Par défaut
    Bonsoir,
    si tu regardes la définition de graphics.drawimage : http://msdn.microsoft.com/en-us/libr...drawimage.aspx

    Tu peux voir qu'il y a énormément de paramètre possible dont :
    DrawImage(Image, Rectangle) : Draws the specified Image at the specified location and with the specified size.

    A partir du moment ou tu sais que tu peux définir la taille de l'image il suffit d'essayer de garder les proportions de ta form et de les adapter a la largeur de la feuille.

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2010
    Messages
    291
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 291
    Par défaut
    Bonjour,

    En plus de ce qui a déjà été dit, il faut ajouter le fait que les coordonnées et tailles d'impression sont en centième de pouce, contrairement à celle de dessin sur une form qui sont en pixels.

Discussions similaires

  1. Création et redimensionnement d'une capture d'écran sous vb
    Par HasnaHamidallah dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 18/04/2014, 11h05
  2. Réponses: 1
    Dernier message: 13/01/2009, 17h24
  3. Problème de redimensionnement
    Par routouf dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 16/07/2004, 16h27
  4. Problème de redimensionnement
    Par david71 dans le forum Agents de placement/Fenêtres
    Réponses: 6
    Dernier message: 14/05/2004, 17h39
  5. [C#] Capture écran dans pictureBox
    Par Gauden dans le forum Windows Forms
    Réponses: 5
    Dernier message: 05/05/2004, 10h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo