实施DocumentPaginator时空白页

问题描述 投票:0回答:1

我正在尝试实现这样的分页器:

public class MyPaginator : DocumentPaginator{

  // ommitting details...

  public override DocumentPage GetPage(int pageNumber) {
    DocumentPage page = new DocumentPage(canvas);
    return page;
  }
}

它可以编译,可以运行,但是页面为空白(白色)。 “画布”是System.Windows.Controls.Canvas的实例。

当我将它放在ScrollViewer这样的屏幕容器中时,它可以完美呈现。

XpsDocument _xpsDocument = CreateXpsDoc(myPaginatorInstance);

唯一起作用的是将页面的大小设置为画布的大小。 我想念什么?

c# wpf xps xpsdocument documentpaginator
1个回答
4
投票

我将再次回答自己的风滚草:

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);
}
© www.soinside.com 2019 - 2024. All rights reserved.