При попытке получить нативный элемент из представления форм xamarin GetNativeElement () возвращает ноль - PullRequest
0 голосов
/ 02 апреля 2020

Итак, я передаю формы Xamarin View в качестве параметра службе зависимостей в UWP, чтобы сделать снимок экрана переданного View.

Вот код:

public async Task<byte[]> CaptureView(View view)
        {
            if (Platform.GetRenderer(view) == null)
            {
                Platform.SetRenderer(view, Platform.CreateRenderer(view));
            }
            var renderer = Platform.GetRenderer(view);
            var nativeView = renderer?.GetNativeElement();
            if(nativeView == null)
            {
                renderer?.SetElement(view);
                nativeView = renderer?.GetNativeElement();
            }
            return await ReturnStream(nativeView);
        }



private async Task<byte[]> ReturnStream(UIElement content)
        {
            var renderTargetBitmap = new RenderTargetBitmap();
            await renderTargetBitmap.RenderAsync(content);
            var pixelpuffer = await renderTargetBitmap.GetPixelsAsync();
            var logicalDpi = DisplayInformation.GetForCurrentView().LogicalDpi;
            IRandomAccessStream stream = new InMemoryRandomAccessStream();
            BitmapEncoder encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.PngEncoderId, stream);
            encoder.BitmapTransform.InterpolationMode = BitmapInterpolationMode.Fant;
            encoder.SetPixelData(BitmapPixelFormat.Bgra8, BitmapAlphaMode.Straight, (uint)renderTargetBitmap.PixelWidth, (uint)renderTargetBitmap.PixelHeight, logicalDpi, logicalDpi, pixelpuffer.ToArray());
            await encoder.FlushAsync();
            byte[] resultingBuffer = new byte[stream.Size];
            await stream.ReadAsync(resultingBuffer.AsBuffer(), (uint)resultingBuffer.Length, InputStreamOptions.None);
            return resultingBuffer;
        }

Я получаю nativeView как нулевое значение каждый раз в CaptureView, даже если у меня есть представление в нем, а средство визуализации не равно нулю.

Я пытаюсь захватить представление и вернуть его изображение в виде байта [], который я ' Позже я преобразую в источник изображений и поместите его в поле зрения

...