この記事は、2012/7/17現在にリリースされている最新の「Windows 8 Release Preview(Build 8400)」、「Visual Studio 2012 RC」を利用しております。「Windows 8 Release Preview」は開発中のものであることにご留意ください。
Windows.System.UserProfile名前空間のLockScreenクラスを使うことで、ロック画面で使用している画像を取得することができます。
Grid上にImageコントロールを配置したXAMLを作成しておきます。配置したImageコントロールにはロック画面で使用している画像を表示させます。
<Page x:Class="LockScreenSample.MainPage" IsTabStop="false" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="using:LockScreenSample" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d"> <Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}"> <Image x:Name="image" HorizontalAlignment="Left" Height="300" VerticalAlignment="Top" Width="500"/> </Grid> </Page>
LockScreenクラスのOriginalImageFileプロパティを参照することで現在のロック画面のURIを取得することができます。このままURIを読み込んでも良いのですが、もっとシンプルに画像を取り出す方法があります。
LockScreenクラスのGetImageStreamメソッドを使用して、現在のロック画面のストリームを取得し、WritebleBitmapインスタンスを作成し、ImageコントロールのSourceプロパティに設定します。
// 現在のロック画面のURIを取得する var uri = LockScreen.OriginalImageFile; // 結果:{file:///C:/WINDOWS/Web/Screen/img100.jpg} // 現在のロック画面のストリームを取得し、WriteableBitmapを作成する var strm = LockScreen.GetImageStream(); var bmp = new WriteableBitmap((int)image.Width, (int)image.Height); bmp.SetSource(strm); // ロック画面に使用されている画像を画面上に表示する image.Source = bmp;
上記のコードを実行すると、以下のようになります。