2

在使用 WPF 中的 documentViewer 为固定文档实现文档轮换进行了一场漫长的战斗之后,我终于设法让它使用下面的代码:

//Increment Rotation
        if (Rotation == 270)
            Rotation = 0;
        else
            Rotation += 90;

        FixedDocument document = (FixedDocument)docViewer.Document;
        foreach (PageContent page in document.Pages)
        {
            //Create New Size
            Size newSize = new Size(page.Child.Height, page.Child.Width);

            //Adjust Size
            page.Child.Height = newSize.Height;
            page.Child.Width = newSize.Width;

            page.Height = newSize.Height;
            page.Width = newSize.Width;

            //Create Transform
            TransformGroup pageTransform = new TransformGroup();
            pageTransform.Children.Add(new RotateTransform(Rotation));

            //Set Transform Shift
            if (Rotation == 90)
                pageTransform.Children.Add(new TranslateTransform(newSize.Width, 0));
            if (Rotation == 180)
                pageTransform.Children.Add(new TranslateTransform(newSize.Width, newSize.Height));
            if (Rotation == 270)
                pageTransform.Children.Add(new TranslateTransform(0, newSize.Height));

            page.Child.RenderTransform = pageTransform;

            //Update
            page.Measure(newSize);
            page.Arrange(new Rect(newSize));
            page.UpdateLayout();
        }
        docViewer.Document = null;
        docViewer.InvalidateVisual();
        docViewer.Document = document;
        docViewer.InvalidateVisual();
        docViewer.UpdateLayout();

问题是当您查看文档时,第一页(或您开始旋转时正在查看的任何页面)不会完全刷新。(页面大小发生变化,但转换不生效。)直到您滚动出视图然后返回,然后一切都很好。我该如何解决?

4

1 回答 1

2

更新:此问题是由在远程桌面会话中工作引起的。

于 2011-03-21T02:03:24.933 回答