如何使用C+从UWP中的png数据的std::string创建位图图像+/CX

如何使用C+从UWP中的png数据的std::string创建位图图像+/CX,uwp,c++-cx,Uwp,C++ Cx,我想从C++/CX中的png数据的std::string创建位图图像。这是我的密码。正在创建BitmapImage,但与Xaml中的Image elements源绑定时,不会显示它 void setImage(std::string imageDataStr, uint64_t len) { auto stream = ref new InMemoryRandomAccessStream(); auto writer = ref new DataWriter(stream-&g

我想从C++/CX中的png数据的std::string创建位图图像。这是我的密码。正在创建BitmapImage,但与Xaml中的Image elements源绑定时,不会显示它

void setImage(std::string imageDataStr, uint64_t len) {

    auto stream = ref new InMemoryRandomAccessStream();
    auto writer = ref new DataWriter(stream->GetOutputStreamAt(0));

    Platform::Array<unsigned char>^ data = ref new Platform::Array<unsigned char>((unsigned char*)imageDataStr.data(), len);
    writer->WriteBytes(data);

    create_task(writer->StoreAsync()).then([=](unsigned bytesStored)
    {
        Image->SetSource(stream);
    });
}
void setImage(std::string imageDataStr,uint64_t len){
自动流=ref new INMEMORYRANDOMACCESS stream();
自动写入器=引用新数据写入器(流->GetOutputStreamAt(0));
平台::数组^data=ref新平台::数组((无符号字符*)imageDataStr.data(),len);
writer->WriteBytes(数据);
创建_任务(writer->StoreAsync())。然后([=](unsigned bytesStored)
{
图像->设置源(流);
});
}
我做错什么了吗


有什么建议吗?

stream->Seek(0);需要添加以确保它从流的开头开始读取位图数据。避免将二进制数据存储在字符串中。stream->Seek(0);也不起作用。最好不要将二进制数据保存在字符串中,但从我用于网络请求的内部API中,我只获取字符串形式的数据。因此,不要修复您的网络抽象,而是继续,并破坏另一个接口。不明智。流->搜索(0);需要添加以确保它从流的开头开始读取位图数据。避免将二进制数据存储在字符串中。stream->Seek(0);也不起作用。最好不要将二进制数据保存在字符串中,但从我用于网络请求的内部API中,我只获取字符串形式的数据。因此,不要修复您的网络抽象,而是继续,并破坏另一个接口。不明智。