gpt4 book ai didi

wpf - 如何在 WPF 中打印带有分页的视觉对象?

转载 作者:行者123 更新时间:2023-12-04 16:19:49 26 4
gpt4 key购买 nike

我有一个 ScrollViewer 和非常“长”的内容。
我写了一个继承自 DocumentPaginator 的类,但我不明白如何为这个 Visual 的每个部分创建一个“框架”?我的意思是,我如何“查看”控件的下一页?
我试过这个,但没有成功:

    public override DocumentPage GetPage(int pageNumber)
{
double left = pageNumber * pageSize.Width;
Point pt = new Point(left, 0);

visual.RenderTransform = Transform.Identity;
visual.RenderTransform = new TranslateTransform(-left, 0);

visual.Measure(pageSize);
visual.Arrange(new Rect(visual.DesiredSize));

DocumentPage page = new DocumentPage(visual);
return page;
}

使用此代码,我得到了应有的第一页,第二页与第一页完全相同,其余所有页面均为空白。

最佳答案

DocumentPaginator很棘手。以下是帮助我正确估计页面大小并确保没有空白页出现的几个步骤:

覆盖这两个属性 IsPageCountValidPageCount作为:

    public override bool IsPageCountValid
{
get { return true; }
}



public override int PageCount
{
get
{
if (pageCount == 0)
{
this.ComputePageCount();
}
return pageCount;
}
}

使用私有(private)函数 ComputePageCount 进行页面大小计算(根据指定的单个 pageSize 将页面分解为确切的页面数)。

所有页数计算能力的关键在这里设置

IsPageCountValid = true



这将始终确保分页器使用您覆盖的方法来计算页数。

可以通过设置 DocumentPaginator.PageSize 属性来指定单个页面大小。

考虑每一页中的所有页眉/页脚。大多数空白/较少页面是错误的 PageCount 计算的结果。

关于wpf - 如何在 WPF 中打印带有分页的视觉对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3726995/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com