美文网首页Windows 10程序员.NET
【UWP开发】自定义锁屏&桌面壁纸

【UWP开发】自定义锁屏&桌面壁纸

作者: mtobeiyf | 来源:发表于2015-11-01 00:16 被阅读693次

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

    应用界面 实现效果

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

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

    using Windows.System.UserProfile
    

    设置壁纸

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

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

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

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

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

    这样就有个Uri指向根目录下的pic.jpg文件。

    接下来要用到StorageFile来导入文件。

    还是要先引用

    using Windows.Storage;
    

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

    StorageFile file = await StorageFile.GetFileFromApplicationUriAsync(imgUri);
    

    下面贴上主要源码。

    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

    相关文章

      网友评论

      • 神经骚栋:没想到 你也是霉粉~~~哈哈
        mtobeiyf:@神经骚栋 哈哈😄 在哪都能遇到霉亲

      本文标题:【UWP开发】自定义锁屏&桌面壁纸

      本文链接:https://www.haomeiwen.com/subject/eqxqhttx.html