将带有图像的FixedDocument转换为XPS会降低图像质量

时间:2019-03-27 19:25:29

标签: c# xps fixeddocument

我想从包含一些图像的FixedDocument创建XPS文件。当我打开XPS文件时,对于100%缩放,图像看起来还可以,但是随着更高的缩放,图像质量下降。是否可以将图像放在XPS文件中,以便在缩放100%以上时不会丢失图像质量?

我已使用以下代码将图像添加到FixedDocument:

FixedDocument fixedDocument = new FixedDocument();
FixedPage page = new FixedPage();

var filename = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), Context.NomAplicacio, "Settings", "logo3.jpg");

var bitImage = new BitmapImage();
bitImage.BeginInit();
bitImage.StreamSource = new FileStream(filename, FileMode.Open, FileAccess.Read);
bitImage.DecodePixelWidth = 150;
bitImage.CacheOption = BitmapCacheOption.OnLoad;
bitImage.CreateOptions = BitmapCreateOptions.IgnoreColorProfile;
bitImage.EndInit();
bitImage.StreamSource.Seek(0, SeekOrigin.Begin);
bitImage.Freeze();

var tempImage = new System.Windows.Controls.Image { Source = bitImage };
bitImage.StreamSource.Dispose();
page.Children.Add(tempImage);

PageContent pageContent = new PageContent();
((IAddChild)pageContent).AddChild(page);
fixedDocument.Pages.Add(pageContent);

这是我的代码,用于从FixedDocument生成XPS文件:

using (var container = Package.Open(fileNameXps, FileMode.Create))
{
    using (var xpsDoc = new XpsDocument(container, CompressionOption.NotCompressed))
    {
        var pol = new XpsPackagingPolicy(xpsDoc);
        var rsm = new XpsSerializationManager(pol, false);
        var paginator = fixedDocument.DocumentPaginator;
        rsm.SaveAsXaml(paginator);
    }
}

查看XPS文件,我发现图像(在文件夹资源内部)已重新缩放,并且与原始图像相比尺寸非常小。可能是问题所在,但我不知道如何在其中包含原始图像的情况下创建XPS。

0 个答案:

没有答案