B8G8R8A8 表示都用8位的值

时间:2022-04-25 09:18:17

先来说说如何获取 Win 2D 组件。很简单,创建 UWP 应用项目后,你打开“解决方案资源打点器”窗口,然后在【引用】节点上右击,从快捷菜单中选择【打点 Nuget 措施包】命令,在打开的窗口中搜索“Win 2D”,然后安置带有 uwp 标识的阿谁就可以了。

B8G8R8A8 表示都用8位的值

趁便说一下,nuget 的包缓存在你的用户文件夹下,就是系统盘下的 \users\xxx,xxx是你登录系统的用户名,在文件夹下有个 .nuget 目录,\packages 子目录下就是缓存的包,巨细取决你安置的组件,大的时候 4、5 个G也有的。

在你的应用项目中,VS 只是创建了一个 JSON 文件来描述你引用的组件,Win 2D 添加引用告成后,你的引用列表应该是这样的。

B8G8R8A8 表示都用8位的值

你如果看到 Win2D.uwp 这个项目,那就没问题了。

不过,你得注意,直接双击它是无法在“东西浏览器”中检察的,你可以这样:打开“东西浏览器”窗口,然后把浏览的子集改为“我的解决方案”,这样,你就能看到你当前项目中所有引用的组件的类型布局了。

B8G8R8A8 表示都用8位的值

此刻,你就能看到 Win2D 库的根基内容了。

B8G8R8A8 表示都用8位的值

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); } }

随便画几下,纯属鬼画符。效果如下图所示。

B8G8R8A8 表示都用8位的值

但是,我们今天的主题是跟 UI Composition 有关的,虽然上述绘图法很飘逸,却不是咱们今天的主题。我们下面要做的,是使用 Composition API 来泛起本身绘制的内容。