UWP使用必应每日壁纸(二)
##前段时间写了使用必应壁纸的接口,只是通过本地的json文本演示了壁纸展示,没有涉及网络获取,这回这篇文章修改了数据获取部分,换成了在线获取,项目的结构和上次的没太大的区别,所以大家可以先看看上篇文章,然后再看这篇文章。
##如下图,增加了一个获取接口类。
##这个通过HttpClient自带的getstring 方法获取了数据,然后我也把它反序列化了成了对象返回了。
##下面是调用代码
##注释部分是之前的读取本地json的部分。
##下面是代码 方便复制
using BingWallpapers.Models;
using BingWallpapers.Services;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices.WindowsRuntime;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.Storage;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;
using Windows.Web.Http;// https://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x804 上介绍了“空白页”项模板namespace BingWallpapers
{/// <summary>/// 可用于自身或导航至 Frame 内部的空白页。/// </summary>public sealed partial class MainPage : Page{public MainPage(){this.InitializeComponent();}private async void Page_Loaded(object sender, RoutedEventArgs e){//此集合为GridView的sourceObservableCollection<WallpapersDetail> picModels = new ObservableCollection<WallpapersDetail>();//json文件的url//Uri uri = new Uri("ms-appx:///Assets/file.json");//var file = await StorageFile.GetFileFromApplicationUriAsync(uri);读取的json文本//string text = await Windows.Storage.FileIO.ReadTextAsync(file);然后反序列化成类//WallpapersData wallPaperModel = Newtonsoft.Json.JsonConvert.DeserializeObject<WallpapersData>(text);WallpaperService wallpaperService = new WallpaperService();WallpapersData wallPaperModel = await wallpaperService.GetWallparper(1, 8);//通过重新组装成集合给GridViewforeach (var item in wallPaperModel.images){picModels.Add(new WallpapersDetail(){Title = item.copyright,Source = "https://www.bing.com" + item.url});}GV.ItemsSource = picModels;}/// <summary>/// 要保存的图片对象/// </summary>private WallpapersDetail wallpapers;private void MenuFlyout_Opening(object sender, object e){var menuFlyout = sender as MenuFlyout;var gridViewItem = menuFlyout.Target as GridViewItem;wallpapers = gridViewItem.Content as WallpapersDetail;}private async void Save_Click(object sender, RoutedEventArgs e){Uri uri2 = new Uri(wallpapers.Source);var httpClientPicData = new HttpClient();var resBuffer = await httpClientPicData.GetBufferAsync(uri2);StorageFolder destinationFolder = await KnownFolders.PicturesLibrary.CreateFolderAsync("BingWallpapers", CreationCollisionOption.OpenIfExists);var destinationFile = await destinationFolder.CreateFileAsync("BingWallparpers"+DateTime.Now.Ticks + ".jpg", CreationCollisionOption.ReplaceExisting);await FileIO.WriteBufferAsync(destinationFile, resBuffer);}}
}
##xaml代码
##增加了右键菜单,一个右击事件,一个保存点击事件,如下图。
##在右击菜单里我获取了右击的Gridview的item获取了图片的Url,然后将对象保存了wallpaper对象里,
##点击保存事件时,其实调用了一次网络请求,因为知道是图片,所以直接使用获取buffer。最后将buffer写入了创建的图片里。
<Pagex:Class="BingWallpapers.MainPage"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:local="using:BingWallpapers"xmlns:data="using:BingWallpapers.Models"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"mc:Ignorable="d"Loaded="Page_Loaded"Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"><Grid><GridView x:Name="GV"><GridView.ItemTemplate><DataTemplate x:DataType="data:WallpapersDetail"><StackPanel><TextBlock Text="{x:Bind Title}"/><Image Source="{x:Bind Source}"/></StackPanel></DataTemplate></GridView.ItemTemplate><GridView.ContextFlyout><MenuFlyout Opening="MenuFlyout_Opening"><MenuFlyoutItem Text="保存"x:Name="Save"Click="Save_Click"/></MenuFlyout></GridView.ContextFlyout></GridView></Grid>
</Page>
##在使用图片库时记得在下图里勾选图片库。
##下面是运行之后的效果因为用的是1809的sdk貌似自带了半透明的效果
#代码还是上篇文章的,不过是在online分支,之前在csdn写的,但是那个编辑器不太好用搞了一半,就换简书的了。
虽然代码简单还是贴上来吧https://github.com/zgj1995/BingWallpapers
UWP使用必应每日壁纸(二)相关推荐
- java一键换壁纸_Java 版下载必应每日壁纸并自动设置 Windows 系统桌面(改编自 C# 版)...
哈哈,好久没有写博客了,已经荒废了,前几天在某 IT 网站看到一个用 C# 写的设置必应每日壁纸为 Windows 系统桌面,看了看源码是通过调用 User32.dll 进行设置的,刚刚最近做的项目更 ...
- python批量下载必应每日壁纸
文章目录 python批量下载必应每日壁纸 一.图片来源选择 二.python实现 python批量下载必应每日壁纸 必应搜索的每日背景壁纸都是高质量的图片,下载来当桌面壁纸再好不过了,微软官方也推出 ...
- Bing Test -必应每日壁纸自动换
今天向大家推荐一个桌面美化类的工具,没错就是自动更换壁纸,而且是精美的必应每日壁纸哦!绿色小巧,开机自启动,设置后每日自动更新你的桌面~ 软件名称:Bing Test 链接: http://pan.b ...
- 必应每日壁纸API HTML 使用必应每日API为背景 css 背景图片 加模糊 遮罩
必应每日壁纸API 必应每日壁纸接口API https://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&mkt=zh ...
- 必应每日壁纸下载|必应每日壁纸V3.3.1免费下载
每天自动更新一个高清壁纸.换完壁纸后,软件可以自动退出,不占用你的内存,真的是相当良心啊. 必应每日壁纸下载链接 必应每日壁纸插件是一个简便实用的chrome必应壁纸插件,是由微软官方推出的一款壁纸更 ...
- Python脚本 - 下载必应每日壁纸
Python脚本 - 下载必应每日壁纸 必应每日壁纸可以通过链接 https://area.sinaapp.com/bingImg/ 访问,本文利用python脚本进行下载. 所需条件 操作系统:Wi ...
- 通过快捷方式快速更换桌面壁纸(必应每日壁纸)
通过快捷方式快速更换桌面壁纸(必应每日壁纸) 01 前言 02 正文 03 后记 01 前言 桌面壁纸,大家都懂的,换的不是壁纸,是寂寞 心情.市面上各种桌面美化软件就不提了,这里介绍一种高端非主流玩 ...
- php 必应每日壁纸,GitHub - lylares/todaybing: 必应壁纸七牛云图片站
PHP 实现必应每日壁纸+七牛云图片站 本程序实现bing每日图片保存在服务器本地,然后自动上传到七牛云空间,在前端界面展现的图片皆从七牛云获取. 更新 2018.04.04 更新: 1.接口以及部分 ...
- 必应每日壁纸批量下载
背景 桌面壁纸好久没有更新,感到有些审美疲劳.必应每日推荐高质量壁纸,有好心人已经做成了专门的必应壁纸站,更新桌面壁纸,顺便练手爬虫小程序. 分析 第一步提取出全部图片的链接,单个页面正则提取后,加个 ...
最新文章
- 读博前三年0文章,后期发力一口气11篇一作!这个“90后”现任职985博导
- 转:优化js脚本设计,防止浏览器假死
- 第二次实验报告(漏)
- 七种寻址方式(直接寻址方式)
- 新版Ubuntu安装日文输入法
- E - 娜娜梦游仙境系列——莫名其妙的插曲
- thinkphp5.0.6 连接SQLServer2008r2 配置总结
- 如何在一台window系统上演示Erlang分布式程序
- PentaLogix ViewMate Pro v11.16.16破解版
- DSI3协议 CRM模式通信讲解
- javac错误: 找不到符号或程序包XXX不存在
- 石油公路工程都在用的光纤测试仪是什么型号
- java基于springboot+vue的大学生宿舍公寓管理系统 element
- 【老生谈算法】matlab实现图像去雾算法——图像去雾
- python 全栈开发之路 day1
- 网络即时战略游戏软件开发 结构体系分析
- 区块链技术用于商品溯源
- Verilog软硬件思维切换
- 围剿Viking、专杀工具的较量——继初遇Worm.Viking.dy
- 拉格朗日插值在MATLAB的实现