Попробуйте это .. В примере я использовал a для активации PhotoChooserTask
. XAML такой.
XAML
<Grid x:Name="LayoutRoot" Background="Transparent">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<!--ContentPanel - place additional content here-->
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<Button Name="btnSet" HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Content="Set Image" Click="btnSet_Click" />
</Grid>
</Grid>
Нажмите событие для кнопки.
C#
private void btnSet_Click(object sender, RoutedEventArgs e)
{
PhotoChooserTask photoTask = new PhotoChooserTask();
photoTask.Completed += photoTask_Completed;
photoTask.PixelHeight = 1280;
photoTask.PixelWidth = 768;
photoTask.Show();
}
В обработчике photoTask_Completed
событий вы можете сохранить изображение на IsolatedStorage
void photoTask_Completed(object sender, PhotoResult e)
{
if (e.TaskResult == TaskResult.OK)
{
using (var isoStore = IsolatedStorageFile.GetUserStoreForApplication())
{
if (isoStore.FileExists(fileName))
{
isoStore.DeleteFile(fileName);
}
using (IsolatedStorageFileStream targetStream = isoStore.OpenFile(fileName, FileMode.Create, FileAccess.Write))
{
byte[] readBuffer = new byte[4096];
int bytesRead = -1;
while ((bytesRead = e.ChosenPhoto.Read(readBuffer, 0, readBuffer.Length)) > 0)
{
targetStream.Write(readBuffer, 0, bytesRead);
}
}
}
}
}
Тогда в OnNavigatedTo
случае вы можете загрузить изображение из IsolatedStorage
и установить его в качестве фон.
protected override void OnNavigatedTo(NavigationEventArgs e)
{
base.OnNavigatedTo(e);
byte[] data;
using (var isoStore = IsolatedStorageFile.GetUserStoreForApplication())
{
if (isoStore.FileExists(fileName))
{
using(IsolatedStorageFileStream stream = isoStore.OpenFile(fileName, FileMode.Open, FileAccess.Read))
{
data = new byte[stream.Length];
stream.Read(data, 0, data.Length);
}
MemoryStream ms = new MemoryStream(data);
bmp = new BitmapImage();
bmp.SetSource(ms);
ImageBrush img = new ImageBrush();
img.ImageSource = bmp;
LayoutRoot.Background = img;
}
}
}
Переменная fileName
содержит имя изображения, сохраняемого в IsolatedStorage
. Изображение переписывается каждый раз, когда вы выбираете новое изображение из библиотеки. Надеюсь это поможет.
поблагодарить yooooooooooooooooooooooou очень оченьyyyyyyyyyyyyyyy много^_^ – mohammad
Добро пожаловать: D –