Масштабирование TextBox на RenderTargetBitmap без потери качества - PullRequest
0 голосов
/ 16 апреля 2019

Кто-нибудь знает, есть ли способ убедиться, что TextBoxes хорошо масштабируется на RenderTargetBitmap?

См. Мой код ниже, я пытаюсь создать выходной файл 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, в частности, отрисовывает идеально, но текстовые поля теряют качество.В качестве сноски я знаю, что одним из способов было бы вручную добавить текст в мой выходной файл впоследствии с помощью Win2D, но я просто подумал, что сначала проверю здесь, если что-то упустил.

Спасибо

Вывод (Вы можете нажать на изображение, чтобы увидеть потерю качества) Output

...