0

イメージ処理で動作する Windows Phone 8 アプリを実装して、Windows 8 アプリから移植しようとしています。しかし、最初はすぐに行き詰まりました。

私が達成したいのは、電話からいくつかの写真を選択して、アルバムで見るのと同じようにアプリで表示することです。このために、私はいくつかの MVVM テクニックも試しました。BitmapImageしかし、ファイルからを作成しようとするとStream、範囲外であるというエラーが表示されます...

ここに私のモデルがあります:

public class SelectedPhoto : IDisposable
{
    public Stream Data { get; set; }

    public string Name { get; set; }

    public BitmapImage Image { get; set; }

    public SelectedPhoto(string name, Stream data)
    {
        Name = name;

        Data = new MemoryStream();
        data.CopyTo(Data);

        Image = new BitmapImage();
        Image.SetSource(Data); //Here's the Argument Exception. 
    }

    public void Dispose()
    {
        Data.Dispose();
    }
}

したがって、コンストラクターでかなり例外が与えられます...そして、これを次のPhotoChooserTaskようなコードで使用します:

private void PhotoChooserTaskCompleted(object sender, PhotoResult e)
{
    if (e.TaskResult == TaskResult.OK)
    {
        PhotosViewModel.AddPhoto(new SelectedPhoto(e.OriginalFileName, e.ChosenPhoto));
    }
}

Argument Exception は次のように述べています: オフセットと長さが配列の範囲外であるか、カウントがインデックスからソース コレクションの末尾までの要素数を超えています。しかし、私はストリームを操作しているわけではありません。いくつかの例を見てきたように、ストリームから BitmapImage を作成するために必要なだけです。

この場合、選択した画像ファイルの BitmapImage を電話から取得するにはどうすればよいですか? または、WriteableBitmap として直接取得するにはどうすればよいですか? 後で、ピクセル操作を行う予定です。

どんなタイプのアプローチでも大歓迎です、ありがとう。

4

1 に答える 1