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