Today we are going to learn how to set User Account Picture through Windows Store Apps.

In this article I will create a Windows Store application that allows the user to set the user account picture of the system.

Here are the steps to be followed.

Step 1

Create a Windows Store Application using C#.

Step 2

In this step I will design my page.

<Page

x:Class="SetAccountPicture.MainPage"

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

xmlns:local="using:SetAccountPicture"

xmlns:d="http://schemas.microsoft.com/expression/blend/2008"

xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

mc:Ignorable="d">

<Grid >

<Grid.Background>

<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">

<GradientStop Color="Black"/>

<GradientStop Color="#FFC9B9B9" Offset="1"/>

</LinearGradientBrush>

</Grid.Background>

<StackPanel Orientation="Vertical" Margin="40,100,0,0">

<Button x:Name="setImageButton" Content="Set image" Click="SetImage_Click" Height="69" HorizontalAlignment="Center" Width="188"/>

<Image x:Name="accountPic" Visibility="Visible" AutomationProperties.Name="LargeImage placeholder" Width="448" Height="448" Margin="0,50,10,0" HorizontalAlignment="Center"/>

<TextBlock x:Name="status" FontSize="30" Margin="0,30,10,0" HorizontalAlignment="Center" ></TextBlock>

</StackPanel>

</Grid>

</Page>


In the preceding code I use a button and a label to show status messages.

Step 3

Here I included some namespaces to perform the task efficiently; they are:

using Windows.Storage;

using Windows.Storage.Pickers;

using Windows.Storage.Streams;

using Windows.System.UserProfile;

using Windows.UI.Core;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Media.Imaging;

Step 4

In the button's click event I put the C# code for getting the image using FileOpenPicker and make that image as the user Account picture.

Getting the image with FileOpenPicker:

FileOpenPicker imagePicker = new FileOpenPicker

{

ViewMode = PickerViewMode.Thumbnail,

SuggestedStartLocation = PickerLocationId.PicturesLibrary,

FileTypeFilter = { ".jpg", ".jpeg", ".png", ".bmp" }

};

StorageFile imageFile = await imagePicker.PickSingleFileAsync();

Here I use the SetAccountPictureAsync method of the UserInformation class. I use
using Windows.System.UserProfile for the namespace to access this class. SetAccountPictureAsync() accepts 3 storageFile objects for setting the small image, large image, and video. But here I only use the second parameter; see:

SetAccountPictureResult result = await UserInformation.SetAccountPicturesAsync(null, imageFile, null);

Note: Setting the Account Picture will fail if the user disallows it in PC Settings.

The SetAccountPictureAsync() returns SetAccountPictureResult. Using this I will check the result of whether my task is completed successfully or not and show this message for the user.

Step 5

Here is the full code of MainPage.XAML.cs file:

using System;

using System.Collections.Generic;

using System.IO;

using System.Linq;

using Windows.Foundation;

using Windows.Foundation.Collections;

using Windows.Storage;

using Windows.Storage.Pickers;

using Windows.Storage.Streams;

using Windows.System.UserProfile;

using Windows.UI.Core;

using Windows.UI.Xaml;

using Windows.UI.Xaml.Controls;

using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Input;

using Windows.UI.Xaml.Media;

using Windows.UI.Xaml.Media.Imaging;

namespace SetAccountPicture

{
public sealed partial class MainPage : Page

{

public MainPage()

{

this.InitializeComponent();

}

protected override void OnNavigatedTo(NavigationEventArgs e)

{

}

private async void SetImage_Click(object sender, RoutedEventArgs e)

{

FileOpenPicker imagePicker = new FileOpenPicker

{

ViewMode = PickerViewMode.Thumbnail,

SuggestedStartLocation = PickerLocationId.PicturesLibrary,

FileTypeFilter = { ".jpg", ".jpeg", ".png", ".bmp" }

};

StorageFile imageFile = await imagePicker.PickSingleFileAsync();

if (imageFile != null)

{

SetAccountPictureResult result = await UserInformation.SetAccountPicturesAsync(null, imageFile, null);

if (result == SetAccountPictureResult.Success)

{

status.Text = "Account Picture Succussfully Updated";

PictureChanged();

}

else

{

status.Text = " Error in setting Account Picture Succussfully";

}

}

}

private async void PictureChanged()

{

StorageFile image = UserInformation.GetAccountPicture(AccountPictureKind.LargeImage) as StorageFile;

if (image != null)

{

try

{

IRandomAccessStream imageStream = await image.OpenReadAsync();

BitmapImage bitmapImage = new BitmapImage();

bitmapImage.SetSource(imageStream);

accountPic.Source = bitmapImage;

}

catch

{

}

}

}

}

}

Step 6

Now the application is ready to run. Build and Run it. Click on the Set Image button to pick an image to be set.

Set-Account-Picture-in-Windows-Store-Apps.jpg

Your Account picture has been changed or saved.

Change-User-Account-Picture-in-Windows-Store-Apps.jpg