字节数组刷Windows 8.1

时间:2015-09-21 08:03:59

标签: c# windows-phone-8.1 bytearray

我在Stackoverflow或互联网上找到了很多答案,但没有人解决我的问题。 我找到的最接近的解决方案是混合了一些并导致了这个:

InMemoryRandomAccessStream stream = new InMemoryRandomAccessStream();
using (DataWriter writer = new DataWriter(stream.GetOutputStreamAt(0)))
{
    writer.WriteBytes(foto.FOTO_BYTE);
    writer.StoreAsync().GetResults();
}
BitmapImage image = new BitmapImage();
image.SetSource(stream);
ImageBrush brush = new ImageBrush();
brush.ImageSource = image;
preview.Background = brush;

第二部分有效,因为我已经在另一个应用程序中使用过它,但是在Windows 8.1中我将byte[]转换为InMemoryRandomAccessStream时出现问题。

无论如何,我们将不胜感激。

PS:new WriteableBitmapImage(bitmap);在WP 8.1中不起作用:(

谢谢大家。

编辑:preview是画布,可能是错误的填充方式吗? 这是我初始化它的方式

<Grid x:Name="rootView">
    <Grid.RowDefinitions>
        <RowDefinition Height="*"></RowDefinition>
        <RowDefinition Height="Auto"></RowDefinition>
    </Grid.RowDefinitions>

    <Canvas x:Name="preview" Background="White" Grid.Row="0"></Canvas>
    <Button x:Name="btnElimina" HorizontalAlignment="Center" Grid.Row="1" Content="ELIMINA"></Button>
</Grid>

2 个答案:

答案 0 :(得分:0)

我正在使用这个

public static class ByteArrayExtensions
{
    public static async Task<BitmapImage> AsBitmapImageAsync(this byte[] byteArray)
    {
        if (byteArray == null) return null;

        using (var stream = new InMemoryRandomAccessStream())
        {
            await stream.WriteAsync(byteArray.AsBuffer());
            var image = new BitmapImage();
            stream.Seek(0);
            image.SetSource(stream);
            return image;
        }
    }
}

答案 1 :(得分:0)

使用此功能进行所需的转换:

using System.Runtime.InteropServices.WindowsRuntime;
internal static async Task<InMemoryRandomAccessStream> ConvertTo(byte[] arr)
{
    InMemoryRandomAccessStream randomAccessStream = new InMemoryRandomAccessStream();
    await randomAccessStream.WriteAsync(arr.AsBuffer());
    randomAccessStream.Seek(0);

    return randomAccessStream;
}