在开始吹牛之前,先给大伙伴们拜个年,祝各位身体健康.生活愉快.[码]到功成. ------------------------------------------------------------------------------- 今年春节老周没有去玩,远的不愿去,近的都去过了,虽然外面的大太阳那么娇媚,但仍不知道去哪儿玩,干脆不玩了.只要知足常乐,天天都是过年,是吧. 今天老周就说一个比较不复杂的东东——共享目标,这玩意儿呢,其实与8.1的是一样的,也是,这个功能没必要改,所以SDK团队…
延迟共享是啥呢,这么说吧,就是在应用程序打开共享面板选择共享目标时,不会设置要共享的数据,而是等到共享目标请求数据时,才会发送数据,而且,延迟操作可以在后台进行. 这样说似乎过于抽象,最好的诠释方法,还是通过实例对比来观察吧. 老周设计的示例解决方案包含三个项目,其中一个是共享目标,用来接收共享的文本内容,并把文本写入到一个.txt文件中,存放到“文档”库中. 另外两个项目是:一个是未延迟的共享行为,再一个是延迟共享行为. 下面来对比一下效果. 先看未延迟共享的操作,如下图. 因为我在发送数据前…
这个功能必须在“红石-1”(build 14393)以上的系统版中才能使用,运行在一台设备上的应用,可以通过URI来启动另一台设备上的应用.激活远程应用需要以下前提: 系统必须是build 14393或以上版本,UWP应用必须使用14393或以上版本的SDK开发. 被启动的应用应当支持协议激活,比如Cortana的协议URI为:[ms-cortana:],当然如果是你自己开发的应用,可以自己定义一个协议,名字随便取,不要跟系统的协议或别人的应用冲突就行,比如:[haha:][zxzx:]等. 必…
这个功能其实并不常用,一般开发较少涉及到证书,不过,简单了解一下还是有必要的. 先来说说制作测试证书的方法,这里老周讲两种方法,可以生成用于测试的.pfx文件. 产生证书,大家都知道有个makecert工具.好,我们先用这个工具来生成一个证书,并存放到当前用户的证书存储中.打开VS的开发人员命令提示符,然后输入: makecert -n // -e // -n 表示证书的标题名字,在系统的证书管理单元窗口中,它会显示在“颁发给”一列中,即证书是颁给谁的.在本例中,该荣誉证书主要颁发给中国好男人.…
Windows 10 发布后,其实SDK也偷偷地在VS的自定义安装列表中出现了,今天开发人员中心也更新了下载.正式版的SDK在API结构上和以前预览的时候是一样的,只是版本变成10240罢了,所以大家不要问老周有什么新的API. API虽然没变,但VS中的应用程序项目是有了新变化.毕竟以前都是预览的,而现在是“正规军”,以前练兵时都用土豆枪,现在都是真刀真枪干了,故而应用程序项目是有变化的. 以前老周跟大家讲的修改项目模板,去掉遥测类库的方法仅仅是针对预览版的,现在我们无须这么做,在新建项目时,…
Windows 10 SDK预览版需要10030以上版本号的Win 10预览版系统才能使用.之前我安装的9926的系统,然后安装VS 2015 CTP 6,再装Win 10 SDK,但是在新建项目后,打开XAML文件时,XAML设计器无法正常注册. 后来,我在SDK目录下的描述API协定的xml文件中看到,对系统的版本要求是在10030以上.所以,应该安装3月份的预览版,即10041以上的版本就能正常使用XAML设计器了. 在VS的使用过程,如果出现错误,不要急着发狂,因为那样做除了伤身之外别无…
记得前一次,老周给大伙,不,小伙伴们介绍了如何填写 .resw 文件,并且在 XAML 中使用 x:Uid 标记来加载.也顺便给大伙儿分析了运行时是如何解析 .resw 文件的. 本来说好了,后续老周会写一篇关于如何在代码里面手动加载文本资源的博文,但一直拖到今天,因为老周前阵子在忙着开发自己的 UWP 应用,已经向应用商店提交了一个版本,昨天刚提交完一次更新. 好,今天咱们就聊聊代码加载文本资源的事情. 在 XAML 中使用 uid 加载资源虽然方便,但是它有个缺点——不同控件有不同的属性,有…
从WPF开始,就有个InkCanvas控件,封装了数字墨迹处理相关的功能,Silverlight到Win 8 App,再到UWP应用,都有这个控件,所以,老周说了3688遍,凡是.net基础扎实者,必懂WPF,凡是WPF基础扎实者,必懂UWP.这叫一脉相承. 现在你明白为什么每次SDK发布后,老周不用学习就可以直接拿来用的原因了吧,因为老周认真学习过WPF呗,无他,如此而已. Windows 10 一周年更新后,SDK也随即更新,预览版毕竟是未定型的,所以,在预览版阶段,老周并不打算写什么,现在…
在若干天之前,老周给大家讲了Adaptive Toast通知的XML模板,所以相应地,今天老周给大家介绍一下Adaptive磁贴的新XML模板. 同样道理,你依旧可以使用8.1时候的磁贴模板,在win 10的API中也是支持的,此外,Win10 App还支持全新的自适应磁贴模板,本文老周就给大家先讲一下基本结构,下一篇文章中咱们再说一说复杂排版. 应用程序的图标可以分为两类:第一类是应用商店上专用的,就是你的应用提交到商店后,给用户看的图标:另一类就是应用本身的一些图标或磁贴. 磁贴其实也就这么…
老周最近热衷于讲故事,接下来还是讲故事时间. 有人问我:你上大学的时候,有加入过学生会吗?读大学有没有必要加入学生会? 哎哟,这怎么回答呢,从短期来说,加入学生会有点用,至少可以娱乐一下,运气好的话,说不定能遇到红颜知己,但这概率相当低.从长远发展看嘛,是没什么用.老周当年读了四年本科,在学生会混了四年,什么名堂也没混出来. 一方面老周向来不求虚名,所以也没去参选所谓的什么部长.主席之类的,这些“官衔”听起来很高大上,实际上很庸俗蠢.既然没兴趣,因而老周更不需要去搞那些见不得人的勾当,什么勾当?…
使用 Win 2D 组件,就可以很轻松地绘制各种图形,哪怕你没有 D2D 相关基础,也不必写很复杂的 C++ 代码. 先来说说如何获取 Win 2D 组件.很简单,创建 UWP 应用项目后,你打开“解决方案资源管理器”窗口,然后在[引用]节点上右击,从快捷菜单中选择[管理 Nuget 程序包]命令,在打开的窗口中搜索“Win 2D”,然后安装带有 uwp 标识的那个就可以了. 顺便说一下,nuget 的包缓存在你的用户文件夹下,就是系统盘下的 \users\xxx,xxx是你登录系统的用户名,在…
动画在 XAML 中也有,而且基本上与 WPF 中的用法一样.不过,在 UWP 中,动画还有一种表现方式—— 通过 UI Composition 来创建. 基于 UI Composition 的动画,相对于 XAML 动画,有以下优点: 1.不使用 UI 线程,XAML 动画是共享 UI 线程的,而 Composition 中的动画是使用辅助线程的. 2.Composition 动画支持表达式(计算公式)来产生动画,相对灵活. 老周的建议是:两者都用,因为基于 XAML 和基于 Composit…
如果老周没记错的话,园子里曾经有朋友写过如何在 UWP 项目中使用 Sqlite数据库的文章.目前我们都是使用第三方封装的库,将来,SDK会加入对 Sqlite 的支持. 尽管目前 UWP-RT 库中还没有自带操作Sqlite数据库的API,不过,真要使用的话也不难,因为通过 Nuget ,我们其实可以获取很多支持 Sqlite 操作的第三方组件,当然了,组件虽多,但不是个个都好用,有的会发生这样那样的错误.老周试过几个库,找到一个比较不错的,而且支持 LINQ 操作. 其实呢,如果数据不是很多…
按例,老周今天要讲一个故事,这个故事之前老周在微博上分享过.大伙知道在8.1的时候,有一个扩展类库——NotificationExtensions,可以真TMD轻松生成通知XML模板,其实,这个类库也支持UWP的自适应通知模板,要是你需要的话,可以握紧鼠标,拼命点这里:https://github.com/WindowsNotifications/NotificationsExtensions 这是Github上的开源组件,至于说github是什么,不要问我,老周也不知道是什么. =======…
Windows App一般情况下,同一时刻只能有一个应用程序实例在运行,为了在特殊需求下可以同时呈现不同的UI,SDK提供了多视图操作支持. 应用程序可以创建新的应用视图,以新的视图为基础可以呈现与主视图不同的内容,但又不影响主视图的UI.这些视图既可以在同一个窗口中切换,也可以用新的窗口来呈现新的视图.这些窗口,用户可以拖放到不同的虚拟桌面中. 其实,视图的创建.切换.显示都不难,主要的难点在于完成这些操作所需要的类型被分布在不同的命名空间中,故不熟悉SDK的朋友可能找不到. 视图管理相关的A…
在开始今天的内容之前,老周先说一个问题,这个问题记得以前有人提过的. 设置 Windows.ApplicationModel.Core.CoreApplicationView.TitleBar.ExtendViewIntoTitleBar 属性可以让应用窗口中的内容扩展到标题栏.简单地说,就是你的UI区域可以扩大,并填充到标题栏,这在开发自定义标题栏或弄个什么毛玻璃效果时很有用. 不过,这个 ExtendViewIntoTitleBar 属性有个“八阿哥”,一旦你设置之后,系统会对其进行记录,很…
除了 DirectX 游戏开发,我们一般很少单独使用 UI Composition ,因此,与 XAML 互动并集成是必然结果.这样能够把两者的优势混合使用,让UI布局能够更灵活. 说到与 XAML 的集成,则我们必须先认识一位伙计,他非常重要,位于 Windows.UI.Xaml.Hosting 命名空间下,名叫 ElementCompositionPreview ,有了它,我们才可以在 XAML 元素与 Composition UI 元素之间游走.来看看它都公开了哪些成员. public s…
记得前面(忘了是哪天写的,反正是前些天,请用力点击这里观看)老周讲了一个14393新增的控件,可以很轻松地结合InkCanvas来完成涂鸦.其实,InkCanvas除了涂鸦外,另一个大用途是墨迹识别,就是手写识别. 识别功能早在Win 8 App的API中就有了,到了UWP,同样使用,这叫传承,一路学过来,都是一个体系的,我不明白为什么某些人一遇到升级就说SDK变化太大,适应不了.我是不明白了,有什么适应不了的,该不会是你笨吧,或者学习方法不对.反正老周在以前的博客中都说过了,学习要学活,不要把…
本文老周就跟伙伴们探讨一下关于文件读写的方法.总得来说嘛,有三种方案可以用,而且每种方案都各有特色,也说不上哪种较好.反正你得记住老祖宗留给我们的大智慧——事无定法,灵活运用者为上. OK,咱们开始吧. 先说第一个方案:使用 FileIO类. 这个类属于RT库API,它公开了一堆静态方法,可以直接调用,快捷方便,就像.net里面的File类一样.在使用FileIo类的时候,需要一个引用已知文件的StorageFile实例,而且FileIo只能操作已经存在的文件,它不会自动创建文件,这一点要注意.…
上次本来说好,今天咱们来讨论 socket 相关的话题,但,对于 socket ,老周还有一些问题没弄清楚,等弄清楚了,再和大伙伴们一起探讨.故,今天咱们扯一扯多媒体转码的事. 听起来挺复杂的,不过,由于有现成的API,使得在UWP中完成转码并不算复杂,我一说,大家就会懂的. 不说F话,直入正题吧.多媒体转码相关的API在 Windows.Media.Transcoding 命名空间下,具体的使用步骤如下: a.new一个MediaTranscoder实例,不用教你了吧. b.正常情况下,不用修…
UI Composition 除了能够为 UI 元素建立三维空间外,还有相当重要的一个部件——灯光.宇宙万物的精彩缤纷,皆源于光明,光,使我们看到各种东西,除了黑洞之外的世界都是五彩斑谰的.故而,真要模拟现实物体,合理的灯光照射是很关键,不然就“不像”了. Composition API 为各种灯光效果提炼了一个公共基类——CompositionLight,它带有两个规范性的属性: Targets:可视化元素的集合.用来确定场景中哪些东西应该被照亮.比如,你模拟了一面墙,墙壁上挂着各种画,有山水…
从 1607 (14393)版本开始,MediaPlayer 类就可以在前台与后台之间无缝播放,你不必再考虑前台与后之间的通信,所以从 14393 开始,你就不需要再用 BackgroundMediaPlayer 类了.无论多媒体资源是前台还是后台播放,都由 MediaPlayer 类负责.与此同时,在 XAML 控件体系中,MediaElement 类也由 MediaPlayerElement 类替代. 这些内容老周就不多说了,因为 SDK 文档的更新日志上都有说明.不管是音频或是视频都统一到…
IT界最近这几年,各种乱七八糟的东西不断出现,其中能用在实际工作与生活中的,大概也就那么几个.Web 前端也冒出各种框架,这就为那些喜欢乱用框架的公司提供了很好的机会,于是造成很多项目体积越来越庞大,越来越难维护.一切变得越来越没有标准,所以,很多公司在招聘码农时就特能乱写,还要求你精通 AA,BB,CC,DD,EE,FF,GG……甚至有的不下二三十项要求.老周觉得这些公司基本上是神经病,先不说世界没有人能精通那么多东西,就算真有人能精通那么多,那估计这个人也活不久了,早晚得累死的. 实际上,W…
针对 MIDI 音乐的 API ,其实在 Win 8.1 的时候就出现.在UWP中采用了新的驱动模式,MIDI 消息传递更加高效. 首先得说明的是,UWP 的 MIDI 相关 API 不是针对 MIDI 文件的,而是针对 MIDI 设备的,所以它不具备保存 MIDI 文件的功能.当然,如果你想把 MIDI 消息存为音频文件,完全可以自己一个字节一个字节地写入.MIDI 文件分为两个数据块——头部和音轨.头部主要描述音轨类型(单轨或多轨),包含轨道数量,以及计时方式. MIDI 有两种方式来描述音…
在开始今天的吹 BB 博文之前,说点题外话. 首先,上次老周给大伙伴们介绍完发送 MIDI 音符,本来说好的接着说一下如何更改乐器音色,为啥这么久都没更新呢.特特来解释一下,最近老周接了一个 ASP.NET Core 的项目,所以忙碌了一段时间.项目不大,一个人独立完成的话感觉特好. 其次,族中一位兄弟大学毕业了,他一直想找一个网页前端的.然后他看到许多招聘信息上写着要求你精通1.2.3.4.5.6.7.8.9.10.11.12.…… 一大堆框架.然后他问我,哥,你能精通那些框架吗? 我回答:能…
所谓预启动,其实你一看那名字就知道是啥意思了,这是直接译,也找不到比这个叫法更简练的词了.在系统资源允许的情况下(比如电池电量充足,有足够的内存空间),系统会把用户常用的应用程序在后台启动,但不会显示用户界面.在预启动时,可以事先初始化一些数据,等到用户正式启动应用时,呈现界面的效率就有所提升. 预启动的时候,应用程序仍然会调用 OnLaunched 方法的,在 OnLaunched 方法调用之后,会马上发生 Suspending 事件,随后应用就会暂停. 当用户正式启动应用时,同样也会调用 O…
实现 INotifyPropertyChanged 接口可以在属性更改后通知数据的使用者,这个相信大伙儿都知道.于是,有朋友会问:对于要实时显示进度的情况,比如更新进度条,能用这个实现吗? 当然是可以的,也很简单,定义一个类,实现 INotifyPropertyChanged 接口,然后公开表示处理进度的属性,并且在属性更改后引发通知事件. 然后把该类的实例与进度条进行绑定即可,和一般的绑定差不多.不过,有一点需要强调:通常是把属性更改通知发送给UI对象的,多数情况下,我们在处理一些耗时操作都会…
所谓三维变换,其实是在二维平面上产生三维的视觉效果.前面老周简单提了一下透视效果,如果透视效果不能满需求,那可以考虑用三维变换. UIElement类有一个属性叫Transform3D,它定义的类型为Transform3D,但,这个类是没有公共的构造函数的,困为它只作为基类.从这个类派生出两个类: PerspectiveTransform3D——这个类的作用是设置观察点的位置,它不能单独使用,单独使用这个类,看不到变换效果.所谓观察点,就好比咱们照相时照相机的观察窗口,照相机放到什么位置,就会看…
所谓透视效果,就是在平面坐标空间上模拟出“好像”三维的效果.要是老周没有记错的话,以前在写WP8相关的内容时写过,UWP中的透视方法也保留了以前的Do法,其实这玩意儿是从 Silverlight 沿袭下来的.不过,UWP添加了一些三维变换相关的东东,这个老周以后会跟大伙儿聊,今天咱们还是先了解透视效果. UiElement这个可视化对象的公共基类公开了一个Projection属性,可以用于设置对象的透视参数,它的类型是 Projection,可是,Projection 是抽象类,是不能拿来用的,…
分析URI中的字符有K种方法(K >= 2),如果查询字符串中的参数比较简单,可以通过子字符串查找的方式来处理:如果查询字符串相对复杂,你可以使用正则表达式来匹配 key1=value1 ,  key2=value2等. 如果你想很轻松地完成查询参数分析,应当考虑使用现成的API,这不,在Windows.Foundation命名空间下面,你会看到一个名字很刺眼的类——WwwFormUrlDecoder.这个很是简单,调用构造函数创建实例时需要提供一个参数,就是URI中的查询字符串,而且必须是以…