首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在WPF中打印带有分页的视觉?

如何在WPF中打印带有分页的视觉?
EN

Stack Overflow用户
提问于 2010-09-16 13:12:28
回答 1查看 2K关注 0票数 3

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

代码语言:javascript
复制
    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;
    }

通过这段代码,我得到了第一页,第二页和第一页完全一样,其余的页面都是空白的。

EN

回答 1

Stack Overflow用户

发布于 2011-02-25 09:38:27

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

将两个属性IsPageCountValidPageCount重写为:

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

代码语言:javascript
复制
public override int PageCount
{
    get
    {
        if (pageCount == 0)
        {
            this.ComputePageCount();
        }
        return pageCount;
    }
}

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

此处设置的所有页计数计算功能的键

IsPageCountValid = true

然后,它将始终确保分页器使用覆盖方法计算页数。

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3726995

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档