2014-04-05 16 views
15

Tôi đang viết một ứng dụng cho Windows Phone 8.1.Chuyển đổi IBuffer thành mảng byte trong Windows Phone 8.1, làm cách nào?

Tôi cần lưu UIElement dưới dạng tệp hình ảnh (tôi thích JPG hoặc PNG). Tôi đang sử dụng lớp RenderTargetBitmap để thực hiện việc này. Sau khi gọi phương thức RenderAsync trên UIElement của tôi, tôi tạo một IBuffer chứa kết quả của phương thức GetPixelsAsync() của RenderTargetBitmap của tôi.

Bây giờ tôi cần gọi phương thức ToArray() để chuyển đổi IBuffer của tôi thành mảng byte để lưu hình ảnh của tôi bằng BitmapEncoder, nhưng có vẻ như trên Windows Phone 8.1 không có phương thức ToArray() nào cho IBuffer , trong khi trên Windows 8.1 có mặt.

Tôi làm cách nào để giải quyết vấn đề này?

Cảm ơn bạn!

+0

Can bạn cho thấy một số mã? Cụ thể là làm thế nào để bạn tạo IBuffer - đối tượng thực sự thực hiện giao diện là gì? –

Trả lời

21

Tính năng này có sẵn trên Windows Phone 8.1, nhưng nó không phải có sẵn trên WP 8.0. (xem MSDN link)

Bạn cần phải chắc chắn rằng bạn bao gồm không gian tên thích hợp tuy nhiên vì vậy nó được tìm thấy bởi trình biên dịch:

using System.Runtime.InteropServices.WindowsRuntime

+0

Cảm ơn bạn, hoạt động hoàn hảo! : D – AshleyT

3

Tôi chỉ không muốn để tạo câu hỏi mới nên quyết định để mở rộng cái này. Đó sẽ là câu trả lời đầy đủ cho cả hai nền tảng WP8 và App Store của Windows

Có lẽ bạn biết làm thế nào để chuyển đổi IBuffer để byte [] trong Windows App Store nếu chúng ta không thể sử dụng namespace này: System.Runtime.InteropServices.WindowsRuntime

Kính trọng, Marcin giải pháp

Proposal: tôi sử dụng mã từ bài đăng này: https://stackoverflow.com/a/21490534/3139083

Cảm ơn

+0

Chỉ cần một lưu ý để tham khảo trong tương lai, các nguyên tắc cho StackOverflow chỉ ra rằng bạn nên bắt đầu một câu hỏi mới thay vì mở rộng trên một câu hỏi. Nó thường được chấp nhận để bắt đầu một câu hỏi mới nếu câu hỏi này không trả lời trường hợp sử dụng của bạn một cách cụ thể. –

Các vấn đề liên quan