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

C# Discussion :

[WPF] Impression contenu d'une grid


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    183
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 183
    Par défaut [WPF] Impression contenu d'une grid
    Bonjour,

    J'ai une Grid qui contient un graphique.
    J'aimerais pouvoir imprimer le contenu de cette Grid par un appui sur un BP.

    Comment puis-je convertir ma grid dans un format imprimable ?

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    183
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 183
    Par défaut
    En fait j'arrive à imprimer une Grid en la mettant à la bonne échelle mais celle-ci se modifie directement dans l'UI :

    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
    24
    25
    26
    27
    28
    29
                        double memWidht, memHeight;
                        gridTampon = this.gdGraph;
    
                        memWidht = gridTampon.ActualWidth;
                        memHeight = gridTampon.ActualHeight;
    
    
                        //get selected printer capabilities
                        pd.PrintTicket = pd.PrintQueue.DefaultPrintTicket;
                        pd.PrintTicket.PageOrientation = System.Printing.PageOrientation.Landscape;
                        System.Printing.PrintCapabilities capabilities = pd.PrintQueue.GetPrintCapabilities(pd.PrintTicket);
    
                        //get scale of the print wrt to screen of WPF visual
                        double scale = Math.Min(capabilities.PageImageableArea.ExtentWidth / gridTampon.ActualWidth, capabilities.PageImageableArea.ExtentHeight /
                                       gridTampon.ActualHeight);
    
                        //Transform the Visual to scale
                        gridTampon.LayoutTransform = new ScaleTransform(scale, scale);
    
                        //get the size of the printer page
                        Size sz = new Size(capabilities.PageImageableArea.ExtentWidth, capabilities.PageImageableArea.ExtentHeight);
    
                        //update the layout of the visual to the printer page size.
                        gridTampon.Measure(sz);
                        gridTampon.Arrange(new Rect(new Point(capabilities.PageImageableArea.OriginWidth, capabilities.PageImageableArea.OriginHeight), sz));
    
                        //now print the visual to printer to fit on the one page.
                        pd.PrintVisual(gridTampon, "First Fit to Page WPF Print");
    Pour pallier à cela, je déclare une grid "gridTampon" qui sert juste à être redimensionnée au format de l'imprimante. Mais étrangement, même si c'est la grid tampon qui est modifiée, la grid dans mon GUI l'est aussi (this.gdGraph). Est ce que la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    gridTampon = this.gdGraph;
    utilise des pointeurs ? ça expliquerait le fait qu'une modif sur la grid tampon affecte celle de ma GUI.

  3. #3
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2012
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 206
    Par défaut
    En C# tout est objet tous passe par adresse. (sauf les type de bases) donc oui c'est normal.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    183
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 183
    Par défaut
    Citation Envoyé par chaparo Voir le message
    En C# tout est objet tous passe par adresse. (sauf les type de bases) donc oui c'est normal.
    D'accord, merci pour l'info. Mais du coup est-ce possible que je fasse des modifications sur un objet tampon sans affecter l'objet d'origine ?

  5. #5
    Membre Expert

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 067
    Par défaut
    Citation Envoyé par pitipilot Voir le message
    UP
    Tu peux cloner l'objet pour ça.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    183
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 183
    Par défaut
    Bonjour ,

    Je ne connaissais pas la possibilité de cloner un objet .
    En fait ma Grid contient un graphique Oxyplot
    Et quand j'essaye de cloner ma grid via ces instructions :

    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
     
                var sb = new StringBuilder();
                var writer = XmlWriter.Create(sb, new XmlWriterSettings
                {
                    Indent = true,
                    ConformanceLevel = ConformanceLevel.Fragment,
                    OmitXmlDeclaration = true,
                    NamespaceHandling = NamespaceHandling.OmitDuplicates,
                });
                var mgr = new XamlDesignerSerializationManager(writer);
     
     
                mgr.XamlWriterMode = XamlWriterMode.Expression;
     
     
                XamlWriter.Save(this.graph, mgr); //Ligne où apparait l'erreur
    J'obtiens cette erreur : "Impossible de sérialiser un type générique 'System.Collections.Generic.List`1[OxyPlot.OxyColor]'."

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 04/07/2015, 22h46
  2. [Débutant] Redimensionner le contenu d'une grid en vue d'une impression
    Par d.d.jcrn dans le forum VB.NET
    Réponses: 0
    Dernier message: 14/08/2013, 14h26
  3. Réponses: 0
    Dernier message: 16/08/2010, 14h03
  4. Réponses: 0
    Dernier message: 18/03/2010, 14h32
  5. [impression] imprimer le contenu d'une url
    Par FFF dans le forum Autres Logiciels
    Réponses: 4
    Dernier message: 30/11/2005, 15h07

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