0

画像ライブラリから選んだ画像を背景に設定したい。そのため、IsolatedStorageSetting で選択した写真の元の名前を取得します。しかし、後で私はパスからファイルのストリームを取得することができません..ここにコード:

bitmapimage.UriSource = new Uri(Settings.BackgroundPhotoUrl, UriKind.Absolute);
BackgroundImg.ImageSource = bitmapimage;

しかし、このコードは機能しません。例外なし。背景だけ黒です。だから私はストリームをIsolatedStorageSettingに保存しようとしました(私はこのソリューションが好きではありません!!)が、この場合は例外が発生します:

Operation denied

ここにコード:

Settings.MyStream = e.ChosenPhoto

最後に、画像を分離ストレージに保存しようとしました。

using (System.IO.IsolatedStorage.IsolatedStorageFile isf = System.IO.IsolatedStorage.IsolatedStorageFile.GetUserStoreForApplication())
{
    isf.CopyFile(e.OriginalFileName, "background" + System.IO.Path.GetExtension(e.OriginalFileName), true);
}

しかし、この場合も、操作拒否の例外が発生します

どうすれば問題を解決できますか?? ありがとう

4

1 に答える 1

0

ストリームを誤解しているようです。ストリームは、読み取りまたは書き込みが可能なファイル内の位置へのポインターです。写真選択ツールを使用している場合、結果はファイルへのストリームになります。ストリームからバイトを読み取り、ローカルストレージに保存する必要があります。その後、そこから画像にアクセスできます。

私のライブ カウントダウン アプリでは、WriteableBitmap クラスを使用して Jpeg をストリームに保存します。これに沿った何か:

var store =     
    System.IO.IsolatedStorage.IsolatedStorageFile.GetUserStoreForApplication();
var newPath = "MyFileName.png";

if (store.FileExists(newPath)) store.DeleteFile(newPath);

var stream = store.CreateFile(newPath);

BitmapImage i = new BitmapImage();
i.SetSource(photoResult.ChosenPhoto);
WriteableBitmap imageToSave = new WriteableBitmap(i);
imageToSave.SaveJpeg(stream, 173, 173, 0, 100);

stream.Flush();
stream.Close();

そういう流れです。アプリはユーザーが最初にアプリをスケーリングできるようにするため、さまざまな機能からパーツを取り出してそれらをまとめる必要がありました。タイルの画像を保存しているため、SaveJpeg メソッドのパラメーターをスケーリングしています。

于 2013-12-03T03:00:41.630 に答える