0

Я знаю, как это сделать в Silverlight, но я не могу найти достаточно информации о том, как это сделать в WinRT.Как сделать снимок экрана для Windows Phone 8.1 в WinRT?

Я читал, что WinRT XAML Toolkit может помочь, но точный компонент, WinRT XAML Toolkit - Composition, похоже, не совместим с Windows Universal App. В настоящее время я разрабатываю компонент Windows Phone 8.1.

WinRT XAML Toolkit for Windows Phone 8.1 похоже, что-то вроде WriteableBitmap.Render.

Я также читал, что метод blit в WriteableBitmapEx может помочь, но я не мог найти никакого примера о том, как этого достичь.

Любые деас?

+0

Почему downvote? Это не вопрос программирования? – PutraKg

+0

Nevermind. Я понял это;) – PutraKg

+1

Downvotes без комментариев грубо, я согласен. Просто комментарий для Toolkit - я намеренно уменьшил поддержку и видимость библиотеки композиций с тех пор, как 8.1 добавил «RenderTargetBitmap», который затрагивает большинство подобных сценариев. Я оставил его в источниках инструментария, но как вдохновение, и в любом случае, если окажется, что «RenderTargetBitmap» не поддерживает какой-то важный сценарий. Например, он может быть изменен для использования для добавления эффектов пиксельного шейдера с графическим процессором в ваш интерфейс, если это необходимо. –

ответ

2

Вы можете использовать RenderTargetBitmap для создания изображения из вашего UIElement, которое содержится в VisualTree.

var renderTargetBitmap = new RenderTargetBitmap(); 
    await renderTargetBitmap.RenderAsync(uielement); 

    var pixels = await renderTargetBitmap.GetPixelsAsync(); 

    var logicalDpi = DisplayInformation.GetForCurrentView().LogicalDpi; 
    var encoder = await BitmapEncoder.CreateAsync(encoderId, stream); 
    encoder.SetPixelData(
     BitmapPixelFormat.Bgra8, 
     BitmapAlphaMode.Ignore, 
     (uint)renderTargetBitmap.PixelWidth, 
     (uint)renderTargetBitmap.PixelHeight, 
     logicalDpi, 
     logicalDpi, 
     pixels.ToArray()); 

    await encoder.FlushAsync(); 

    return renderTargetBitmap; 
1

Simpler использовать, если вы хотите, чтобы отобразить его, чтобы спасти вы должны сделать в ответ выше:

RenderTargetBitmap renderTargetBitmap = new RenderTargetBitmap(); 
await renderTargetBitmap.RenderAsync(RenderedGrid); 
RenderedImage.Source = renderTargetBitmap; 
Смежные вопросы