在RenderTargetBitmap上缩放文本框而不会降低质量

时间:2019-04-16 15:55:20

标签: c# uwp textbox uwp-xaml rendertargetbitmap

有人知道是否有办法确保TextBoxesRenderTargetBitmap上很好地扩展吗?

请参见下面的代码,我试图生成其中包含各种不同元素的Canvas的输出文件。

Images与我的InkCanvas一样,缩放比例也非常完美,而且丝毫没有质量损失。但是TextBoxes根本无法很好地扩展。

RenderTargetBitmap renderTargetBitmap = new RenderTargetBitmap();
//Produce a PNG output with a pixel size of 5x the onscreen canvas
await renderTargetBitmap.RenderAsync(MaskArea, (int)MaskArea.Width * 5, (int)MaskArea.Height * 5);

var pixelBuffer = await renderTargetBitmap.GetPixelsAsync();
var pixels = pixelBuffer.ToArray();
var displayInformation = DisplayInformation.GetForCurrentView();

var folder = await ApplicationData.Current.LocalFolder.CreateFolderAsync("Print", CreationCollisionOption.OpenIfExists);
var file = await folder.CreateFileAsync("Canvas" + ".png", CreationCollisionOption.ReplaceExisting);
using (var stream = await file.OpenAsync(FileAccessMode.ReadWrite))
 {
    var encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.PngEncoderId, stream);
    encoder.BitmapTransform.InterpolationMode = BitmapInterpolationMode.Cubic;
    encoder.SetPixelData(BitmapPixelFormat.Bgra8, BitmapAlphaMode.Premultiplied, (uint)renderTargetBitmap.PixelWidth, (uint)renderTargetBitmap.PixelHeight, displayInformation.RawDpiX, displayInformation.RawDpiY, pixels);
    await encoder.FlushAsync();
 }

我真的不明白为什么我的InkCanvas特别完美地呈现,但是TextBoxes却失去了质量。 作为一个脚注,我知道一种解决方法是在以后使用Win2D将文本手动添加到我的输出文件中,但是我只是想先检查一下这里以防丢失。

谢谢

输出(您可能必须单击图像以查看质量损失) Output

0 个答案:

没有答案