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 ?
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 ?
En fait j'arrive à imprimer une Grid en la mettant à la bonne échelle mais celle-ci se modifie directement dans l'UI :
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
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");
utilise des pointeurs ? ça expliquerait le fait qu'une modif sur la grid tampon affecte celle de ma GUI.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 gridTampon = this.gdGraph;
En C# tout est objet tous passe par adresse. (sauf les type de bases) donc oui c'est normal.
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 :
J'obtiens cette erreur : "Impossible de sérialiser un type générique 'System.Collections.Generic.List`1[OxyPlot.OxyColor]'."
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
Sinon j'ai trouvé d'autre exemple pour imprimer un datagrid.
Je pense qu’il est possible de faire le redimensionnement directement au niveau du menu d'impression qu'au niveau du datagrid.
Avec cette solution, ma grid est quand même redimensionnée
En fait j'ai résolu mon problème d'origine en remettant ma grid à l'échelle et en "remettant ma grid dans son parent" :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 this.gdGraph.LayoutTransform = new ScaleTransform(1, 1); ControlParent.Children.Remove(this.gdGraph); ControlParent.Children.Add(this.gdGraph);
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager