2

この質問は、Windows ストア アプリ (Windows 8)に固有のものです。

を に変換して xml ファイルに保存し、取得してから に変換しようとしてBitmapimageいます。Byte[]Bitmapimage

をに変換できましBitmapimagebyte[](ただし、これは最善の方法ではないため、例は含めていません)。次に、シリアル化を使用してクラスを xml に変換しています。シリアル化に使用される属性は次のbyte[]とおりです。

    private byte[] iconBytes;
    [XmlAttribute(DataType = "base64Binary")]
    public byte[] IconBytes
    {
        get 
        { 
            // TO DO: Convert BitmapImage to Byte[]
            return this.iconBytes; 
        }
        set 
        { 
            this.SetProperty(ref this.iconBytes, value);
            // TO DO: Convert Byte[] to BitmapImage
        }
    }

生成された XML は次のとおりです。

<MyApp xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Groups>
<Group Title="Group1">
  <Items>
    <Item Title="Item1" IconBytes="7uLC/+7iwv/u4sL/7uLC/0RVZf9heJL/X3OH/+vbvP/r27b/69u2/+vbtv/r27b/7d+9/+3fvf/r27z/R2aO/2Z2t/92h9T/obH3/3uXxP/lz57/5c+e/+XPnv/lz57/6dW3/+nVt//azbf/Um6o/2Jqu/9ib77/lqbp/4uq5//gw5T/4MOU/+DDlP/iyJj/5tCy/97Akf/Mt5b/Ulh+/ygpZv82P47/HhpG/01rpv+Npqn/3LuM/9y7jP/ewJH/27KF/9uyhf+xrKf/VWet/1hatf9reND/UVzD/5Sp8f+qmoL/27KF/9uyhf/ft5H/1q2A/9atgP/WrYD/QU6Y/zY2eP8wKFf/cHit/1ZtsP/WrYD/1q2A/9atgP/bsoX/0KF1/9Chdf/QoXX/NkqC/z5Bh/9KRaH/X3W4/zRMf//QoXX/0KF1/9Chdf/UqXz/zZlv/82Zb/8yJCD/Nj5u/0FOkP9FS5j/Wm+2/09rov9CMTP/zZlv/82Zb//QoXX/KBkV/yUWE/8eEg3/rKCc/ycmUP8yOnL/PU6E/2Nfdf9CLSj/LR0Y/zwnIf9fUUT/IxMQ/yASDP8dDwz/dWpp/4eGiP82QHT/QT5h/4l2c/80IB3/NCAc/yoZFf81IR//IBQO/x0QDP8dDgv/HQ4L/5eTkf+OmKL/k5KT/zAeG/8tHhf/KRsU/zIfGv8tHhf/IREN/x8PC/8fEAz/HhEM/7Suq/+dnaL/qqek/zAeGv8hFA//KBkU/ygaFP8uGhb/" />
  </Items>
</Group>
</Groups>
</MyApp>

xml からクラスをデシリアライズしたら、どうすれば に変換できbyte[]ますBitmapImageか?

この問題に対処するいくつかの例がありますが、それらはすべて Silverlight と WPF に関連しており、Windows ストア アプリ (Windows 8)に正常に変換されるものはありません。

Web またはローカル コンピューターからのストリームを使用する例は、この問題には適用されないことに注意してください。データは xml ファイルから逆シリアル化されているため、イメージbyte[]は既にメモリ内にあります。

どんな助けでも大歓迎です。あけましておめでとう!

4

1 に答える 1

1

あなたは使用してみることができますInMemoryRandomAccessStream

var stream = new InMemoryRandomAccessStream();
await stream.WriteAsync(iconBytes.AsBuffer());
stream.Seek(0);

var image = new BitmapImage();
await image.SetSourceAsync(stream);

別の例を次に示します

于 2013-01-02T06:20:53.553 に答える