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 Presentation Foundation Discussion :

Imprimer un panel


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Par défaut Imprimer un panel
    Bonjour,

    J'aimerai imprimer un panel WPF. J'ai donc fait ça :
    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
     
                UIElement panelToPrint_l = this.dockingManager.ActiveDocument.Content as UIElement;
                if (panelToPrint_l != null)
                {
                    // Create the print dialog object and set options
                    PrintDialog printDialog_l = new PrintDialog();
                    printDialog_l.PageRangeSelection = PageRangeSelection.AllPages;
                    printDialog_l.UserPageRangeEnabled = true;
     
                    // Display the dialog. This returns true if the user presses the Print button.
                    Nullable<Boolean> print = printDialog_l.ShowDialog();
                    if (print == true)
                    {
                        printDialog_l.PrintVisual(panelToPrint_l, "Printing active panel...");
                    }
                }
    Malheureusement, si j'ai un panel très grand, celui-ci ne rentre pas dans ma page (normal...).
    Du coup, j'aimerai savoir comment faire pour :
    1) soit réduire mon panel pour qu'il rentre dans la page
    2) soit découper mon panel en fonction de la taille de la page et imprimer le panel sur plusieurs pages

    Merci d'avance.

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Pourquoi ne pas plutôt appliquer une ScaleTransform, sur la propriété LayoutTransform de ton panel ?

  3. #3
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Par défaut
    Citation Envoyé par Thomas Lebrun Voir le message
    Pourquoi ne pas plutôt appliquer une ScaleTransform, sur la propriété LayoutTransform de ton panel ?
    C'est ce que je voulais dire par ma solution 1), mais le problème c'est que je ne sais pas vraiment comment appliquer une ScaleTransform à mon Panel pour que celui-ci prennent les dimensions de ma page à imprimer, tout en ne modifiant pas le rendu de mon panel sur mon IHM...

  4. #4
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Essaye:

    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
    UIElement panelToPrint_l = this.dockingManager.ActiveDocument.Content as UIElement;
                if (panelToPrint_l != null)
                {
                    // Create the print dialog object and set options
                    PrintDialog printDialog_l = new PrintDialog();
                    printDialog_l.PageRangeSelection = PageRangeSelection.AllPages;
                    printDialog_l.UserPageRangeEnabled = true;
     
                    // Display the dialog. This returns true if the user presses the Print button.
                    Nullable<Boolean> print = printDialog_l.ShowDialog();
                    if (print == true)
                    {
                        panelToPrint_l.LayoutTransform = new ScaleTransform { ScaleX = 0.5, ScaleY = 0.5 };
                        printDialog_l.PrintVisual(panelToPrint_l, "Printing active panel...");
                        panelToPrint_l.LayoutTransform = null;
                    }
                }

  5. #5
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Par défaut
    Ca ne fonctionne pas.
    L'impression est toujours de la même taille.

    J'ai aussi essayé de virer la ligne "panelToPrint_l.LayoutTransform = null;". Du coup :
    1) mon panel est réduit dans mon IHM (ce que je ne veux pas au final)
    2) mais au moins ma deuxième impression imprime bien mon panel réduit

  6. #6
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Essaye de faire une (longue) pause, avant de remettre à null le LayoutTransform: c'est possible que c'est parce que ca va trop vite et donc le PrintVisual ne récupère pas le bon visuel.

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

Discussions similaires

  1. Imprimer une windows, un panel, etc. ?
    Par aurelientp dans le forum GWT et Vaadin
    Réponses: 3
    Dernier message: 04/03/2009, 19h16
  2. imprimer un rich:panel
    Par solarien dans le forum JSF
    Réponses: 3
    Dernier message: 21/08/2008, 08h51
  3. [VB6][Flexgrid] Imprimer
    Par tiboleo dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 24/10/2002, 14h14
  4. [VB6] [Outlook] Imprimer un mail en VB
    Par der dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 12/09/2002, 14h20
  5. Comment imprimer le contenu d'un TStringGrid
    Par scorpiwolf dans le forum C++Builder
    Réponses: 2
    Dernier message: 19/06/2002, 15h41

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