Blank pages when implementing DocumentPaginator

依然范特西╮ 提交于 2019-12-31 05:42:05

问题


I'm trying to implement a Paginator like this:

public class MyPaginator : DocumentPaginator{

  // ommitting details...

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

It compiles, it runs, but the page is blank (white). the 'canvas' is an instance of System.Windows.Controls.Canvas.

When I put it in a on-screen container like ScrollViewer it renders perfectly.

XpsDocument _xpsDocument = CreateXpsDoc(myPaginatorInstance);

The only thing that is working is that the page's size is set to the size of the canvas. What am I missing?


回答1:


I'll answer my own tumbleweed (again):

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);
}


来源:https://stackoverflow.com/questions/7825056/blank-pages-when-implementing-documentpaginator

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!