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

Windows Forms Discussion :

[VB.Net] Imprimer un control


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    ingénieur informaticien
    Inscrit en
    Novembre 2005
    Messages
    114
    Détails du profil
    Informations professionnelles :
    Activité : ingénieur informaticien

    Informations forums :
    Inscription : Novembre 2005
    Messages : 114
    Par défaut [VB.Net] Imprimer un control
    Salut
    J'essais d'imprimer une série de controls. J'y arrive mais le problème, c'est qu'ils se supperposent les uns sur les autres et pourtant j'utilise bien la méthode invokepaint et je me sert d'un control PrintDocument. L'objectif est d'imprimer mes controls tels qu'il apparaissent sur le formulaire. J'ais donc écrit le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
            Dim PArgs As PaintEventArgs
     
            PArgs = New PaintEventArgs(e.Graphics, New Rectangle(Me.Panel1.Left, Me.Panel1.Top, Me.Panel1.Width, Me.Panel1.Height))
            InvokePaint(Me.Panel1, PArgs)
            PArgs = New PaintEventArgs(e.Graphics, New Rectangle(Me.Button2.Left, Me.Button2.Top, Me.Button2.Width, Me.Button2.Height))
            InvokePaint(Me.Button2, PArgs)
            PArgs = New PaintEventArgs(e.Graphics, New Rectangle(Me.Button1.Left, Me.Button1.Top, Me.Button1.Width, Me.Button1.Height))
            InvokePaint(Me.Button1, PArgs)
     
    End Sub
    Alors si quelqu'un peut me dire dire ce qui cloche
    Merci d'avance

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    487
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 487
    Par défaut
    Dans la méthode OnPaint, les coordonnées (0,0) de e.Graphics représentent le coin supérieur gauche du control.
    Il faut appliquer une translation (TranslateTransform) au Graphics pour dessiner le control à une position différente de (0,0) dans la page imprimée.

  3. #3
    Membre confirmé
    ingénieur informaticien
    Inscrit en
    Novembre 2005
    Messages
    114
    Détails du profil
    Informations professionnelles :
    Activité : ingénieur informaticien

    Informations forums :
    Inscription : Novembre 2005
    Messages : 114
    Par défaut
    Merci mais ce problème de translation est pris en charge par la méthode InvokePaint. Le premier argument de cette méthode est le control à redéssiner et le deuxième représente le rectangle dans lequel l'on redéssine.
    Peut être que je ne l'utilise pas correctement puisse que tous mes controls s'affichent dans le coin suppérieur gauche de la feuille. Alors j'aimerais bien savoir d'où vient l'erreur :

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    487
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 487
    Par défaut
    Le paramètre PaintEventArgs.ClipRectangle désigne simplement la partie du controle à redessiner. Cela permet de ne redessiner que la partie invalidée du control si c'est plus efficace. Dans ton cas, ce paramètre ne semble pas pris en compte sinon les controles ne se dessineraient pas du tout.
    Graphics.TranslateTransfom (avec des valeurs négatives pour translater vers le bas à droite)

  5. #5
    Membre confirmé
    ingénieur informaticien
    Inscrit en
    Novembre 2005
    Messages
    114
    Détails du profil
    Informations professionnelles :
    Activité : ingénieur informaticien

    Informations forums :
    Inscription : Novembre 2005
    Messages : 114
    Par défaut
    Merci Nico
    C'est top, ça marche.
    A +

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VB.NET] Création de control avec visual studio
    Par HULK dans le forum Windows Forms
    Réponses: 6
    Dernier message: 01/08/2007, 18h06
  2. [VB.NET] Probleme avec controle Listbox ??
    Par Aspic dans le forum VB.NET
    Réponses: 4
    Dernier message: 10/11/2005, 13h30
  3. [VB.NET] Ajout de controles dynamiquement
    Par A77 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 25/04/2005, 09h00
  4. [VB.NET] Imprimer une page aspx
    Par sehing dans le forum ASP.NET
    Réponses: 3
    Dernier message: 22/04/2005, 14h44
  5. [VB.NET] Imprimer des états access
    Par bambou dans le forum Windows Forms
    Réponses: 6
    Dernier message: 25/07/2004, 16h52

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