Как преобразовать пользовательский элемент, созданный в коде, в поток, используя C #?

#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.