我有一个带有背景图像的FlowDocument。目前,它不能在FlowDocumentReader中正确显示,因为当文档上下滚动时,背景图像保持在中心位置。如何将这个FlowDocument转换成FixedDocument,并在DocumentViewer中显示它,这样背景图像也会被修复?
我使用来自here的转换逻辑。但是它不显示FlowDocument.Background图像。
private FixedDocument convert(FlowDocument flowDocument)
{
if (flowDocument == null)
return null;
var paginator = ((IDocumentPaginatorSource)flowDocument).DocumentPaginator;
var package = Package.Open(new MemoryStream(), FileMode.Create, FileAccess.ReadWrite);
var packUri = new Uri("pack://temp.xps");
PackageStore.RemovePackage(packUri);
PackageStore.AddPackage(packUri, package);
var xps = new XpsDocument(package, CompressionOption.NotCompressed, packUri.ToString());
XpsDocument.CreateXpsDocumentWriter(xps).Write(paginator);
FixedDocument doc = xps.GetFixedDocumentSequence().References[0].GetDocument(true);
return doc;
}发布于 2015-03-13 04:26:22
你写的
我有一个带有背景图像的FlowDocument。目前,它不能在FlowDocumentReader中正确显示,因为当文档上下滚动时,背景图像保持在中心位置。
不完全是对特定问题的回答,但为了避免这种情况,请将ImageBrush.ViewportUnits设置为BrushMappingMode.Absolute。然后,将ImageBrush.Viewport设置为所需的背景图像维数:
<FlowDocumentReader ViewingMode="Scroll">
<FlowDocument>
<FlowDocument.Background>
<ImageBrush TileMode="Tile" Stretch="Fill" Viewport="0,0,1000,400" ViewportUnits="Absolute">
<ImageBrush.ImageSource>
<!--Image source here...-->
</ImageBrush.ImageSource>
</ImageBrush>可选地将ImageBrush.Stretch设置为Stretch.Fill以填充指定的视图,并将ImageBrush.TileMode设置为TileMode.Tile以使背景图像重复。
https://stackoverflow.com/questions/29021961
复制相似问题