UWP 自定义锁屏 & 桌面壁纸

调用通用的 API 来设置桌面壁纸,可以实现很多有趣的功能。 在 Windows 通用平台中,可以使 Windows.System.UserProfile 命名空间下的类 UserProfilePersonalizationSettings 来对系统的开始界面背景和锁屏壁纸进行操作。它可以修改锁屏壁纸和桌面壁纸,调用后会返回bool值,如果成功就是 true,否则返回 false。 在调用 UserProfilePersonalizationSettings 类前,先访问一下 IsSupported 方法,看看是否支持该操作。然后通过 Current 属性可以获取到一个 UserProfilePersonalizationSettings 实例,之后你就可以设置壁纸了。 调用 TrySetLockScreenImageAsync 方法设置锁屏壁纸,调用 TrySetWallpaperImageAsync 方法可以设置桌面壁纸,参数都是用来作为背景的图片文件的 StorageFile

应用界面

实现效果

下面通过实例来演示一下如何实现这个功能。

因为 UserProfilePersonalizationSettings 被封装在 Windows.System.UserProfile 中,先引用

1
using Windows.System.UserProfile

设置壁纸

1
2
3
4
UserProfilePersonalizationSettings setting 
  = UserProfilePersonalizationSettings.Current;
  // 实例化对象
bool b = await setting.TrySetLockScreenImageAsync(file);

其中 TrySetLockScreenImageAsync(file) 是尝试设置文件对象 file 为锁屏壁纸。

在测试中,我是直接在项目根目录下添加了一个 pic.jpg 的 1280*720 的图片文件。(其实应该放 Assets 里面的)

那么如何导入图片文件呢? 需要用到 StorageFileUri 在 Class 下定义:

1
private static Uri imgUri = new Uri("ms-appx:///pic.jpg");

这样就有个 Uri 指向根目录下的 pic.jpg 文件。 接下来要用到 StorageFile 来导入文件。 还是要先引用

1
using Windows.Storage;

imgUri 导入文件,注意要用到异步

1
StorageFile file = await StorageFile.GetFileFromApplicationUriAsync(imgUri);

下面贴上主要源码。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public sealed partial class MainPage : Page
{
    public MainPage()
    {
        this.InitializeComponent();
    }
    
    private static Uri imgUri = new Uri("ms-appx:///pic.jpg");
    
    private async void button_Click(object sender, RoutedEventArgs e)
    {
        var msg = new MessageDialog("");
        if (!UserProfilePersonalizationSettings.IsSupported())
        {
            var mess = new MessageDialog("人品太差,不支持哦!");
            await mess.ShowAsync();
        }
        // 获取文件
        StorageFile file = await StorageFile.GetFileFromApplicationUriAsync(imgUri);
        // 设置背景
        UserProfilePersonalizationSettings setting = UserProfilePersonalizationSettings.Current;
        bool b = await setting.TrySetLockScreenImageAsync(file);
    }
}

©Fing

原文最初发布于 https://www.jianshu.com/p/ee4ceeb8abda

加载评论