Windows 8 metro 용 응용 프로그램을 만들고 있는데, 프레임 워크 컨트롤을 이미지로 렌더링하고 하드 디스크에 저장해야하지만 어떻게해야할지 모릅니다. 이것을 위해 SharpDX를 사용할 수 있습니까? 어떻게해야합니까? 도움을 미리 미리 감사드립니다.WinRT 메트로에서 이미지로 컨트롤 렌더링
답변
this 스레드를 따라 가면 Metro의 제한 사항과 작동하지 않는 이유가 설명됩니다.
미안하지만, 요소에 XAML 렌더링 또는 자신의 응용 프로그램의 스크린 샷을 캡처하면 릴리스 버전 안으로 들어가지는 못했습니다 : 그것의 본질이다. 디자인에 따라 은 앱이 다른 앱의 스크린 샷을 캡처 할 수 없음을 나타냅니다.
언급 한 해결 방법은 다음과 같습니다 무슨 의미가
이었다 - 당신이 Direct2D의를 사용하여 모양, 텍스트와 이미지를 그릴 수 있습니다. XAML UI로 그리는 것과 같은 모양입니다. XAML 컨트롤을 렌더링 할 수 있다는 것을 의미하는 것은 아닙니다. 그래도 다소 많은 노력을 기울여야 동일한 결과를 얻을 수있는 대안으로 Direct2D를 사용할 수 있습니다.
죄송합니다. WritableBitmap 클래스의 Render() 메서드는 현재 원하는 것을 성취하기에 불충분합니다. 같은 이유로 스크린 샷을 만들 수 없습니다. 그러나 이것들은 백 로그에있는 것들입니다! 그러나 이제는 알 수 있습니다.
나는이 질문이 Zeeshan 원래 질문에서 만든 코멘트를 되풀이하고 싶습니다 더 정확한 대답이라고 생각하기 때문에.
winrt xaml 툴킷의 확장 방법이 있습니다. http://winrtxamltoolkit.codeplex.com/.../WriteableBitmapRenderExtensions.cs
nuget를 통해 설치합니다
using WinRTXamlToolkit.Composition;
이 XAML 렌더링 :
이var bitmap = await element.Render();
justin.m.chase의 접근 방식은 확실히 경우 작동
> Install-Package WinRTXamlToolkit.Composition
는 사용하여 추가 너는 추가해도 상관 없다. SharpDX 어셈블리에 종속성이 있습니다. RenderTargetBitmap 클래스는 수행하려는 작업에 적합 할 수 있습니다.
// Render XAML to bitmap
var bitmap = new RenderTargetBitmap();
await bitmap.RenderAsync(elementToRender);
// get the pixels
IBuffer pixelBuffer = await bitmap.GetPixelsAsync();
byte[] pixels = pixelBuffer.ToArray();
// write the pixels to a InMemoryRandomAccessStream
var stream = new InMemoryRandomAccessStream();
var encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.BmpEncoderId, stream);
encoder.SetPixelData(BitmapPixelFormat.Bgra8, BitmapAlphaMode.Straight, (uint)bitmap.PixelWidth, (uint)bitmap.PixelHeight, 96, 96, pixels);
await encoder.FlushAsync();
stream.Seek(0);
- 1. 여러 컨트롤을 이미지로 렌더링
- 2. WinRt WebView 컨트롤 내에서 컨트롤 탐색
- 3. 이미지로 HTML 렌더링
- 4. WinRT Bindable 하이라이트 TextBlock 컨트롤
- 5. 버튼/이미지로 라디오 렌더링 simple_form
- 6. 렌더링 된 HTML 이미지로 저장
- 7. RTF 문서를 웹상의 이미지로 렌더링
- 8. 각 프레임을 하나의 이미지로 렌더링
- 9. 이미지로 OpenGL ES 2d 렌더링
- 10. WinForms 래스터지도 렌더링 컨트롤
- 11. 줌라 - 페이지 렌더링 컨트롤
- 12. 콜백에서 렌더링 서버 컨트롤
- 13. 렌더링 IIS에서 asp.net 컨트롤
- 14. 렌더링 중첩 서버 컨트롤
- 15. WinRT Items 컨트롤 (그리드 열과 행 포함)
- 16. WinRT - XAML FlipView 컨트롤 - 비정상적인 새로운 동작
- 17. WinRT/WPF, 나는 다음과 같은 데이터 구조 (C 번호/WinRT 사용) 그래서 윈도우 8 메트로에서 트 리뷰 또는 HeirarchicalDataTemplate
- 18. 컨트롤 안에 JavaFX 2.0 렌더링 컨트롤
- 19. Windows 8 (WinRT)에서 이미지로 비디오를 만드는 방법
- 20. CentOS 5.4의 이미지로 헤드리스 HTML 렌더링
- 21. iPhone UIListView를 이미지로 렌더링 (또는 캡처)
- 22. 변환 된 CSS3 요소를 캔버스/이미지로 렌더링
- 23. Python - HTML 콘텐츠를 GIF 이미지로 렌더링
- 24. WinRT
- 25. Silverlight - 백그라운드 스레드에서 컨트롤 렌더링
- 26. Silverlight 컨트롤 바인딩 및 렌더링
- 27. 리피터에서 하이퍼 링크 컨트롤 렌더링
- 28. 복합 컨트롤 : 렌더링 대 CreateChildControls
- 29. 이미지 파일에 "사용자 컨트롤"렌더링
- 30. RenderAction을 사용하여 사용자 컨트롤 렌더링
winrt xaml 툴킷의 확장 방법이 있습니다. http://winrtxamltoolkit.codeplex.com/SourceControl/changeset/view/512f5e79e2b6#WinRTXamlToolkit.Composition/WriteableBitmapRenderExtensions.cs – Zeeshan