Ho cercato le opzioni su come stampare i controlli WPF e ho trovato alcune soluzioni. Ho bisogno di adattare il mio controllo stampato alla pagina di stampa preservando le proporzioni (il mio controllo è quadrato, griglia sudoku).WPF Stampa per adattarsi alla pagina
Ho trovato una soluzione che ridimensiona e il controllo delle reposizioni per adattarsi a una pagina. Funziona bene, ma anche le riposizionazioni che controllano sulla mia finestra.
qui è il codice che uso per la stampa e il ridimensionamento:
//get selected printer capabilities
System.Printing.PrintCapabilities capabilities = dialog.PrintQueue.GetPrintCapabilities(dialog.PrintTicket);
//get scale of the print wrt to screen of WPF visual
double scale = Math.Min(capabilities.PageImageableArea.ExtentWidth/mrizka.ActualWidth, capabilities.PageImageableArea.ExtentHeight/mrizka.ActualHeight);
//Transform the Visual to scale
mrizka.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.
mrizka.Measure(sz);
mrizka.Arrange(new Rect(new Point(capabilities.PageImageableArea.OriginWidth, capabilities.PageImageableArea.OriginHeight), sz));
dialog.PrintVisual(mrizka, mrizka.getID().ToString());
Ho provato due aproaches per risolvere questo:
Clone mio controllo e poi trasformare clonato uno, originale unaffecting. Non funzionava, per qualche motivo ho finito con un'eccezione: il DependencyObject fornito non è un contesto per questo Freezable, ma stranamente solo in alcuni casi.
Dimensioni e cambi di posizione. Ho provato a chiamare il metodo InvalidateArrange(), che sembrava funzionare, ma solo durante la prima chiamata del metodo di stampa. Durante la seconda chiamata, non ha funzionato.
Cosa devo fare per favore, qualsiasi idea < grazie.
Sarà necessario aggiungere riferimenti a System.Printing e ReachFramework. – StillLearnin
Sembra anche fare riferimento a System.Windows.Media e System.Windows.Controls – Jeff
Questo non funziona correttamente per me, il LayoutTransform sembra essere ignorato, non importa che tipo di Transform mi passi. – Lennart