pages vierges lors de la mise en œuvre DocumentPaginator
-
27-10-2019 - |
Question
Je suis en train de mettre en œuvre un Paginator comme ceci:
public class MyPaginator : DocumentPaginator{
// ommitting details...
public override DocumentPage GetPage(int pageNumber) {
DocumentPage page = new DocumentPage(canvas);
return page;
}
}
Il compile, il fonctionne, mais la page est vide (blanc). la 'toile' est une instance de System.Windows.Controls.Canvas.
Quand je l'ai mis dans un récipient à l'écran comme ScrollViewer il rend parfaitement.
XpsDocument _xpsDocument = CreateXpsDoc(myPaginatorInstance);
La seule chose qui fonctionne est que la taille de la page est définie sur la taille de la toile. Qu'est-ce que je manque?
La solution
Je vais répondre à ma propre Tumbleweed (nouveau):
public override DocumentPage GetPage(int pageNumber) {
Canvas container = new Canvas();
container.Children.Add(canvas);
double scaleX = pageSize.Width / canvas.Width;
double scaleY = pageSize.Height / canvas.Height;
container.RenderTransform = new ScaleTransform(scaleX, scaleY);
container.Width = PageSize.Width;
container.Height = PageSize.Height;
container.Measure(PageSize);
container.Arrange(new Rect(new Point(0, 0), PageSize));
Rect contentBox = new Rect(PageSize);
return new DocumentPage(container, PageSize, contentBox, contentBox);
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow