1

내 앱에서 멈추었습니다. 그 안에 몇 가지 요소가있는 표가 있습니다. 이러한 요소는 단추, 이미지 및 스택 패널 및 중첩 된 격자와 같은 기타 컨트롤입니다. 단추를 클릭 할 때 이미지로 나타나는 사용자를 저장하고 싶지만이 작업을 진행하는 방법을 모릅니다.격자 및 요소를 jpeg 이미지로 저장 - WinRT

그리드 및 버튼과 같은 요소를 쓰기 가능한 비트 맵에 쓸 수 있습니까? 아니면 다른 방법이 있습니까?

요약하면 사용자가 버튼을 클릭하면 내 앱 화면의 스크린 샷을 찍고 싶습니다. 도와주세요.

답변

0

WinRt에서는 "스크린 샷"을 사용하거나 WinRt에서는 컨트롤 만 사용할 수 없습니다. 구현되지 않았으며 지금 당장 계획을 세우지 않습니다.

1

불행히도, 지금은 불가능합니다. @FilipSkakun은 in a response here을 언급 했으므로 요구 사항에 따라 길을 갈 수도 있습니다.

0

당신은 윈도우 폰에서 다음 옵션을 사용하여 JPEG 이미지에 어떤 UIElement에 변환 할 수 있습니다 8. ​​

var bitmap = new WriteableBitmap(element,null); 

using (MemoryStream s = new MemoryStream()) 
{ 
    bitmap.SaveJpeg(s, (int)ContentPanel.Width, (int)ContentPanel.Height, 0, 100); 
} 

내가 당신에게 도움이 될 것입니다 바랍니다.

+0

확실한가요? –

+0

확실히 Windows Phone 8에서 작동합니다.이 문제가 계속 발생하면 확인하고 알려주세요. –

+0

음, WinRT에서 테스트해야한다고 생각합니다. –

1

이것은 Windows 8.1에서 약간 변경되었으며 RenderTargetBitmap을 사용하여 수행 할 수 있습니다. RenderTargetBitmap.RenderAsync (UIElement)를 사용하면 페이지를 포함한 모든 요소의 픽셀을 가져올 수 있습니다.

다음은 FileSavePicker를 사용하여 지정된 파일에 PNG를 저장하는 예입니다.

var filePicker = new FileSavePicker(); 
var file = await filePicker.PickSaveFileAsync(); 
var renderTargetBitmap = new RenderTargetBitmap(); 

using (var stream = await file.OpenAsync(FileAccessMode.ReadWrite)) 
{ 
    var encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.PngEncoderId, stream); 
    await renderTargetBitmap.RenderAsync(this); 
    var pixelBuffer = await renderTargetBitmap.GetPixelsAsync(); 
    var pixelBytes = pixelBuffer.ToArray(); 

    encoder.SetPixelData(
     BitmapPixelFormat.Bgra8, 
     BitmapAlphaMode.Ignore, 
     (uint)renderTargetBitmap.PixelWidth, 
     (uint)renderTargetBitmap.PixelHeight, 
     96.0, 
     96.0, 
     pixelBytes); 

    await encoder.FlushAsync(); 
} 
관련 문제