#c# #uwp
#c# #uwp
Вопрос:
Я создал пользовательские элементы динамически в коде, не используя Xaml, и мне нужно преобразовать его в поток. Я пробовал с помощью RenderTargetBitmap. Но это не работает, есть ли какие-либо другие возможные способы для этого?
private async void ConverteToImage(UIElement element, int pageIndex)
{
RenderTargetBitmap renderTargetBitmap = new RenderTargetBitmap();
await renderTargetBitmap.RenderAsync(element); // Render canvas.
var pixelBuffer = await renderTargetBitmap.GetPixelsAsync();
var logicalDpi = DisplayInformation.GetForCurrentView().LogicalDpi;
using (var stream = new InMemoryRandomAccessStream())
{
var encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.PngEncoderId, stream);
encoder.SetPixelData(
BitmapPixelFormat.Bgra8,
BitmapAlphaMode.Ignore,
(uint)renderTargetBitmap.PixelWidth,
(uint)renderTargetBitmap.PixelHeight,
logicalDpi,
logicalDpi,
pixelBuffer.ToArray());
await encoder.FlushAsync();
SaveAsCustomStamp(stream.AsStream(), pageIndex, loadedDocument);
}
}
Комментарии:
1. Используя a
RenderTargetBitmap
, вы можете выполнять такие сценарии, как применение эффектов изображения к визуальному элементу, который изначально был создан из композиции пользовательского интерфейса XAML .2. Лучший способ — преобразовать его родительский элемент (Xaml) в RenderTargetBitmap.