先来说说如何获取 Win 2D 组件。很简单,创建 UWP 应用项目后,你打开“解决方案资源打点器”窗口,然后在【引用】节点上右击,从快捷菜单中选择【打点 Nuget 措施包】命令,在打开的窗口中搜索“Win 2D”,然后安置带有 uwp 标识的阿谁就可以了。
趁便说一下,nuget 的包缓存在你的用户文件夹下,就是系统盘下的 \users\xxx,xxx是你登录系统的用户名,在文件夹下有个 .nuget 目录,\packages 子目录下就是缓存的包,巨细取决你安置的组件,大的时候 4、5 个G也有的。
在你的应用项目中,VS 只是创建了一个 JSON 文件来描述你引用的组件,Win 2D 添加引用告成后,你的引用列表应该是这样的。
你如果看到 Win2D.uwp 这个项目,那就没问题了。
不过,你得注意,直接双击它是无法在“东西浏览器”中检察的,你可以这样:打开“东西浏览器”窗口,然后把浏览的子集改为“我的解决方案”,这样,你就能看到你当前项目中所有引用的组件的类型布局了。
此刻,你就能看到 Win2D 库的根基内容了。
Microsoft.Graphics.Canvas 以及它的子定名空间都是 Win2D 组件中的类型。
其实,使用 Win2D 组件,你完全可以很简单地绘制各类玩意儿,因为在 Microsoft.Graphics.Canvas.UI.Xaml 定名空间下,直接就供给了一些控件,你可以直接用到 XAML 文档中,然后要画什么就用代码画就行了。好比,我介绍两个对照范例的。
* CanvasControl —— 可以绘制各类你想要的东东,它就相当于一块画布,用代码绘制时须措置惩罚惩罚 Draw 事件,然后就在事件措置惩罚惩罚代码中随便 draw。
* CanvasAnimatedControl —— 跟上面的阿谁家伙差不久不多,只是它可以在你绘制的内容上孕育产生动画。
大伙会看到,这两个控件都有一个 CreateResources 事件,用来干什么鸟的呢?它的感化是这样的,你可以在措置惩罚惩罚这个事件的代码中实例化一些资源,这些资源一般在绘制过程不会频繁窜改的,好比加载的某个图片,某个画刷等。
下面给大伙简单演示一下 CanvasControl 控件的用法。
在 XAML 文档中先要引入定名空间。
<Page
……
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
……
xmlns:canvas="using:Microsoft.Graphics.Canvas.UI.Xaml">
</Page>
然后就可以用了。
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> <canvas:CanvasControl Draw="OnDraw"/> </Grid>
接着措置惩罚惩罚 Draw 事件,我们画上几笔尝尝手。要画东东,我们要用到 Microsoft.Graphics.Canvas 定名空间下的另一个类——CanvasDrawingSession,它果然了许多 Draw 和 Fill 要领,Draw 是画出某个东东,Fill 是填充一个区域。
private void OnDraw(Microsoft.Graphics.Canvas.UI.Xaml.CanvasControl sender, Microsoft.Graphics.Canvas.UI.Xaml.CanvasDrawEventArgs args) { using (CanvasDrawingSession dss = args.DrawingSession) { // 画线 dss.DrawLine(12f, 15f, 335f, 408f, Colors.DarkBlue, 5.5f); // 画矩形 dss.DrawRectangle(55f, 190f, 465f, 369f, Colors.Gold, 8f); // 画圆 dss.DrawEllipse(350f, 350f, 200f, 260f, Colors.Orange, 5f); } }
随便画几下,纯属鬼画符。效果如下图所示。
但是,我们今天的主题是跟 UI Composition 有关的,虽然上述绘图法很飘逸,却不是咱们今天的主题。我们下面要做的,是使用 Composition API 来泛起本身绘制的内容。