Win10系列:UWP界面布局进阶6
在Windows 10的"个性化设置"中,用户可以更改计算机在锁屏状态下的背景图片,除此之外,也可以通过Windows应用商店应用程序将喜欢的图片设置为锁屏背景,下面通过一个示例来介绍如何实现这一功能,在本示例中将为页面添加"选择图片"和"设置锁屏背景"两个按钮,通过单击"选择图片"按钮进入图片选择页面,用户可以从本地文件夹中选择一张图片,单击"设置锁屏背景"按钮将选择的图片设置为锁屏背景。
启动Visual Studio,新建一个Windows应用商店的空白应用程序项目,将其命名为SetLockBackground。打开MainPage.xaml文件,在Grid元素中添加两个Button控件,分别设置按钮显示的文本为"选择图片"和"设置锁屏背景",同时添加一个TextBlock文本块用来显示提示信息。对界面进行布局后的代码如下所示:
<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
<Button x:Name="SelectButton" Content="选择图片" HorizontalAlignment="Left" Margin="773,492,0,0" VerticalAlignment="Top" Height="59" Width="160" FontSize="30" Click="SelectButton_Click"/>
<Button x:Name="SetButton" Content="设置锁屏背景" HorizontalAlignment="Left" Margin="970,492,0,0" VerticalAlignment="Top" Height="59" Width="225" FontSize="30" Click="SetButton_Click"/>
<TextBlock x:Name="Output" HorizontalAlignment="Left" Margin="773,422,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Height="46" Width="564" FontSize="40" Text="请选择图片"/>
</Grid>
在设计器中的界面效果如图5-14所示。

图5-14设置锁屏背景界面效果
打开MainPage.xaml.cs文件,引入相应的命名空间,用于简化代码的编写,具体代码如下所示:
using Windows.Storage;
using Windows.Storage.Pickers;
using Windows.System.UserProfile;
在MainPage类中定义StorageFile类型的全局变量storageFile,用来存放用户选择的图片文件,代码如下所示:
StorageFile storageFile= null;
接下来定义"选择图片"按钮的单击事件处理方法SelectButton_Click(),单击此按钮将打开文件选择器以便选择将要被设置成锁屏背景的图片,具体代码如下所示:
private async void SelectButton_Click(object sender, RoutedEventArgs e)
{
//定义文件选取器对象
FileOpenPicker openPicker = new FileOpenPicker();
//设置文件显示方式为缩略图
openPicker.ViewMode = PickerViewMode.Thumbnail;
//设置文件选取器的起始位置为图片库
openPicker.SuggestedStartLocation = PickerLocationId.PicturesLibrary;
//设置在文件选取器中显示的文件类型
openPicker.FileTypeFilter.Add(".jpg");
openPicker.FileTypeFilter.Add(".jpeg");
openPicker.FileTypeFilter.Add(".png");
storageFile = await openPicker.PickSingleFileAsync();
if (storageFile != null)
{
Output.Text = "您已选择名为"+storageFile.Name+"的文件";
}
else
{
Output.Text = "没有选择图片";
}
}
在上面的方法中,首先创建了用于选择文件的FileOpenPicker类型的对象openPicker,接下来设置openPicker对象的ViewMode属性值为PickerViewMode枚举类型的Thumbnail值,表示将文件选择器的视图模式设置为缩略图,通过为SuggestedStartLocation属性赋值来设置文件选取器打开时的起始位置为当前计算机中的图片库。接着使用openPicker对象的FileTypeFilter属性指定用户可以在文件选取器中看到的文件类型。最后调用openPicker对象的PickSingleFileAsync方法来异步选择单个文件,将返回的StorageFile类型的变量保存在之前定义好的全局变量storageFile中,同时在前台界面中显示选择文件的名称。
下面定义"设置锁屏背景"按钮的单击事件处理方法SetButton_Click(),方法中通过调用LockScreen类的SetImageFileAsync方法异步将所选图片设置为锁屏背景,并在前台界面显示设置成功的提示信息,具体代码如下所示:
private async void SetButton_Click(object sender, RoutedEventArgs e)
{
await LockScreen.SetImageFileAsync(storageFile);
Output.Text = string.Format("已设置图片{0}为锁屏背景", storageFile.Name);
}
运行程序,单击"选择图片"按钮,进入文件选取页面,在文件列表当中选择需要的图片后单击"打开"按钮。返回应用界面后单击"设置锁屏背景"按钮,接着同时按下"Windows+L"快捷键使屏幕处于锁定状态,可以看到此时的锁屏背景已经变成刚才选取的图片,到这里锁屏背景设置功能就介绍完了。
本节中为读者介绍了几种Windows 8界面系统的新特性,以及如何将这些特性运用到Windows应用商店应用程序的开发当中。通过对本节内容的学习,读者可以对全新的Windows 8界面系统有比较直观的认识,在下面的章节中,将系统地介绍Windows应用商店应用程序界面的布局元素及布局方式。
Win10系列:UWP界面布局进阶6的更多相关文章
- Win10系列:UWP界面布局进阶3
与以往的Windows操作系统不同,Windows 10操作系统在正式版当中取消了任务栏中的"开始"按钮,将大部分的应用程序图标放置在开始屏中,同时将系统设置等常用功能整合到了Ch ...
- Win10系列:UWP界面布局进阶1
全新的Windows 10 操作系统支持多种视图模式,用户可以根据需要选择不同的视图模式显示应用.当用户同时浏览或操作多个应用程序时,可以将应用视图调整为辅屏视图或填充视图,这样在一个屏幕中可以同时对 ...
- Win10系列:UWP界面布局进阶9
Grid Grid元素用来定义一个由行和列构成的网格,这是一个功能强大的布局容器,当新建一个页面时会默认选用Grid作为顶级布局元素,下面将通过三个示例来介绍Grid的使用方法. (1)定义Grid的 ...
- Win10系列:UWP界面布局进阶7
Canvas Canvas元素用于定义一个区域,可以向这个区域中添加不同的XAML界面元素.Canvas会对其内部的元素采用绝对布局方式进行布局,下面通过三个示例来介绍Canvas的使用方法. (1) ...
- Win10系列:UWP界面布局进阶5
提示框 在Windows应用商店应用程序中可以使用提示框来向用户显示提示信息,例如可以通过对话框来询问用户当前需要执行的操作,还可以通过弹出窗口来显示需要注意的信息.本节将向读者介绍如何在Window ...
- Win10系列:UWP界面布局进阶4
在开发Windows应用商店应用程序时,可以为页面中的界面元素添加快捷菜单,并设置与其相关的菜单项,用户通过选择快捷菜单中的菜单项来执行与被选择对象相关的操作.下面通过一个示例来介绍如何为页面中的一张 ...
- Win10系列:UWP界面布局进阶2
为了让用户可以在流畅浏览应用界面的同时提供与应用相关的功能按钮,Windows 10系统在用户界面当中引入了侧边栏,侧边栏可以在用户有需要对应用或者系统进行操作时显示,在没有需要操作的时候自动隐藏,并 ...
- Win10系列:UWP界面布局进阶8
StackPanel StackPanel能够以水平或垂直的方式整齐地排列位于其内部的元素.通过设置StackPanel的Orientation属性可以定义内部元素的排列方式,当将Orientatio ...
- Win10系列:UWP界面布局基础1
随着技术的不断发展,使用者对应用程序的界面体验提出了更高的要求,为了应对越来越复杂的界面设计需求和有效的简化界面开发过程,微软公司在其应用程序的开发技术当中引入一套新的应用程序界面描述语言,这就是XA ...
随机推荐
- django会话session
因为因特网HTTP协议的特性,每一次来自于用户浏览器的请求(request)都是无状态的.独立的.通俗地说,就是无法保存用户状态,后台服务器根本就不知道当前请求和以前及以后请求是否来自同一用户.对于静 ...
- js_为元素动态注册事件
<head> <title></title> <script type="text/javascript">//window.onl ...
- vscode所用插件
- leecode第十五题(三数之和)
class Solution { public: void quick_order(vector<int>& num, int star, int en)//快排 { int st ...
- WebSocket前后台交互
其实对于前后台交互有很多种方法(只列举我知道的,嘻嘻): 1:from 表单: 使用场景——小信息量提交给后台 2:ajax(跨域的话用jsonp): 可以进行多量的前后台信心传递: 但实时性不高,不 ...
- 在python中使用正则表达式(二)
这一节主要学习一下compile()函数和group()方法 1. re.compile() compile 函数用于编译正则表达式,生成一个正则表达式( Pattern )对象,然后就可以用编译后 ...
- Setting the Java Class Path
The class path is the path taht Java Runtime Environment(JRE) searches for classes and other resourc ...
- 雷林鹏分享:使用 CSS 显示 XML
使用 CSS 显示 XML 通过使用 CSS(Cascading Style Sheets 层叠样式表),您可以添加显示信息到 XML 文档中. 使用 CSS 显示您的 XML? 使用 CSS 来格式 ...
- GRCh38基因组和注释文件探究
ensembl/release91: cat Homo_sapiens.GRCh38.91.gtf | grep -v "#" | cut -f9 | cut -f1,3,6,8 ...
- Bash Shell 注释多行的几种方法(转)
很实用的小技巧. 我们shell脚本写好了,但是想一行一行测试,怎么办. 笨方法:每行前面加一个 #,有时候我们原脚本里面本来就有注释,所以想再恢复的时候就麻烦了. Bash Shell 注释多行的几 ...