Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用于刷Windows 8.1的字节数组_C#_Windows Phone 8.1_Bytearray - Fatal编程技术网

C# 用于刷Windows 8.1的字节数组

C# 用于刷Windows 8.1的字节数组,c#,windows-phone-8.1,bytearray,C#,Windows Phone 8.1,Bytearray,我在Stackoverflow或互联网上找到了很多答案,但没有一个能解决我的问题。 我找到的最接近的解决方案是一些混合方案,结果是: InMemoryRandomAccessStream stream = new InMemoryRandomAccessStream(); using (DataWriter writer = new DataWriter(stream.GetOutputStreamAt(0))) { writer.WriteBytes(foto.FOTO_BYTE);

我在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中,我在将
字节[]
转换为
InMemoryRandomAccessStream
时遇到了问题

无论如何,我们都会感激你的帮助

PS:
新的可写位图(位图)在WP 8.1中不起作用:(

谢谢大家

编辑:
预览
是画布,填充方式可能不对吗? 这就是我初始化它的方式

<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>

我在用这个

公共静态类ByteArrayExtensions
{
公共静态异步任务AsBitmapImageAsync(此字节[]byteArray)
{
if(byteArray==null)返回null;
使用(var stream=new InMemoryRandomAccessStream())
{
wait stream.WriteAsync(byteArray.AsBuffer());
var image=新的位图图像();
stream.Seek(0);
image.SetSource(流);
返回图像;
}
}
}

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

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;
}
使用System.Runtime.InteropServices.WindowsRuntime;
内部静态异步任务转换器(字节[]arr)
{
InMemoryRandomAccessStream randomAccessStream=新建InMemoryRandomAccessStream();
等待randomAccessStream.WriteAsync(arr.AsBuffer());
randomAccessStream.Seek(0);
返回随机数据流;
}

我不知道为什么,代码似乎有效,但我在画布上看不到任何东西,我发布了我创建代码的代码,我遗漏了一些东西?只是想说明一下,这段代码是用于将字节数组转换为InMemoryRandomAccessStream的。你需要从中生成位图是的,我尝试了一段在wp 8.0(非通用应用程序)中工作的代码但是从inMemoryRandomAccessStream生成的位图的相同代码显示了一个黑色画布:/you使用WP 8吗?您要求Windows 8.1。尝试重新安装应用程序并选中No wait,我没有解释:我有一段代码取自8.0应用程序,我现在使用的代码是8.1。如果检查我的问题,最后5行代码是我用的是将随机转换为位图并将其分配给背景,但它们与您发布的代码不起作用,我不知道为什么..与另一个答案相同,我看到它起作用,但它没有填充画布,我发布了代码,你认为我遗漏了什么吗?我猜画布没有拉伸,添加水平和垂直的a伸直