0

私は次のようなPaginatorを実装しようとしています:

public class MyPaginator : DocumentPaginator{

  // ommitting details...

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

コンパイルして実行しますが、ページが空白(白)です。'canvas'は、System.Windows.Controls.Canvasのインスタンスです。

ScrollViewerのような画面上のコンテナに入れると、完全にレンダリングされます。

XpsDocument _xpsDocument = CreateXpsDoc(myPaginatorInstance);

動作しているのは、ページのサイズがキャンバスのサイズに設定されていることだけです。私は何が欠けていますか?

4

1 に答える 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);
}
于 2011-10-24T00:11:25.690 に答える