Leere Seiten beim Implementieren von DocumentPaginator
-
27-10-2019 - |
Frage
Ich versuche einen solchen Paginator zu implementieren:
public class MyPaginator : DocumentPaginator{
// ommitting details...
public override DocumentPage GetPage(int pageNumber) {
DocumentPage page = new DocumentPage(canvas);
return page;
}
}
Es kompiliert, es läuft, aber die Seite ist leer (weiß). Die 'Leinwand' ist eine Instanz von System.windows.Controls.Canvas.
Wenn ich es in einen Bildschirmbehälter wie Scrollviewer stecke, wird es perfekt.
XpsDocument _xpsDocument = CreateXpsDoc(myPaginatorInstance);
Das einzige, was funktioniert, ist, dass die Größe der Seite auf die Größe der Leinwand eingestellt ist. Was vermisse ich?
Lösung
Ich werde mein eigenes Tumbleweed (wieder) beantworten:
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);
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow