在新的Windows UWP程序中,引入了一个新的API库: Win2D。它是一个d2d的封装,可以直接使用C#来快速实现高效2D绘图了。这个API虽然在Win8.1时代就开始着手开发了,但最近才完善了下来。本文这里就简单的介绍一下它的基本用法:

安装

Win2D并不是Win10 SDK里面的一部分,需要从Nuget上安装,在程序包管理器里直接安装Win2D.uwp即可。

PM> Install-Package Win2D.uwp

这个是Win10下的库,Win8下需要使用Win2D.win81库。安装完后在Project.json中可以看到相应的库依赖:

示例:

Win2D引入了一个新的画布:Microsoft.Graphics.Canvas.UI.Xaml.CanvasControl,所有的绘制必须在它上面进行。因此首先在XAML中添加CanvasControl作为底图:

xmlns:canvas="using:Microsoft.Graphics.Canvas.UI.Xaml"

<Grid>
         <canvas:CanvasControl
Draw="canvasControl_Draw"
ClearColor="CornflowerBlue" />
    </Grid>

然后响应其Draw事件,在里面添加绘制动作:

void canvasControl_Draw(CanvasControl sender, CanvasDrawEventArgs args)
    {
        args.DrawingSession.DrawEllipse(155, 115, 80, 30, Colors.Black, 3);
        args.DrawingSession.DrawText("Hello, world!", 100, 100, Colors.Yellow);
    }

运行效果如下:

这种方式与WinForm和WPF中的自绘制比较像,只是一些API有些差异。目前这里只是一个简单的示例,后面会再写几篇文章对Win2D相关API做更详细点的介绍。感兴趣的朋友可以看下下面的相关文档。

相关文档:

使用Win2D在UWP程序中2D绘图(一)的更多相关文章

  1. 使用Win2D在UWP程序中2D绘图(二)

    绘制API 首先还是看一下前文的的示例: args.DrawingSession.DrawEllipse(155, 115, 80, 30, Colors.Black, 3);    args.Dra ...

  2. Qt中2D绘图问题总结(一)----------基本的绘制与填充

    刚刚开始学习Qt不久,才开始渐渐地熟悉基础内容,学习过程中的一些知识的总结和感悟希望通过博客记录下来,与大家分享学习的同时,也是对自己坚持下去的鞭策,废话不多说了,开始第一次的小总结吧. Qt提供了强 ...

  3. Qt中2D绘图问题总结(二)----------坐标系统

    坐标系统 使用QPainter绘制时使用到逻辑坐标,然后转换成绘图设备的物理坐标. 逻辑坐标到物理坐标的映射由QPainter的worldTransform()函数.QPainter的viewport ...

  4. (2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序

    每次使用 Visual Studio 的模板创建一个 UWP 程序,我们会在项目中发现大量的项目文件.配置.应用启动流程代码和界面代码.然而这些文件在 UWP 程序中到底是如何工作起来的? 我从零开始 ...

  5. (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序

    每次使用 Visual Studio 的模板创建一个 UWP 程序,我们会在项目中发现大量的项目文件.配置.应用启动流程代码和界面代码.然而这些文件在 UWP 程序中到底是如何工作起来的? 我从零开始 ...

  6. 【转 | 侵删】2D 绘图技术中的坐标系统与坐标变换

    本文介绍在 2D 绘图技术中的坐标系统和坐标变换的相关知识.同时介绍 Kity 在这方面提供的 API .希望这些知识对于需要进行图形应用开发的同学会有所帮助. 锤子的故事 很久以前,有一个画家,他很 ...

  7. 13、在 uwp应用中,给图片添加高斯模糊滤镜效果(一)

    如果在应用中,如果想要给app 添加模糊滤镜,可能第一想到的是第三方类库,比如 Win2d.lumia Imaging SDK .WriteableBitmapEx,不可否认,这些类库功能强大,效果也 ...

  8. Quartz-2D绘图之图形上下文详解

    上一篇文章大概描述了下Quartz里面大体所包含的东西,但是对具体的细节实现以及如何调用相应API却没有讲.这篇文章就先讲讲图形上下文(Graphics Context)的具体操作. 所谓Graphi ...

  9. Quartz-2D绘图之概览

    最近公司新项目需求要把数据图形化,趁着这个机会,重温了下Quarts-2D这个强大的跨平台2D绘图引擎. 一.Quartz概述 1.Quartz 2D是一个二维的绘图引擎,支持iOS和Mac OS平台 ...

随机推荐

  1. vue头像上传

    项目四知识点 默认头像 选择头像 <template> <div class="adatar"> <img :src="adatar?ada ...

  2. Java的Timer定时器

    Timer主要用于Java线程里指定时间或周期运行任务,它是线程安全的,但不提供实时性(real-time)保证. 上面提到了守护线程的概念. Java分为两种线程:用户线程和守护线程. 所谓守护线程 ...

  3. Jmeter配置元件执行顺序

    一.Jmeter组件 Sampler(采样器):真正干活的,比如http 定时器:默认为毫秒. 前置处理器和后置处理器:必须在有采样器才有效,在采样器的前后执行.作关联,拿响应中的数据使用,用得比较多 ...

  4. fiddler添加监测请求的 ip地址

    本文转载自:http://www.jackness.org/2014/12/26/%E7%BB%99fiddler%E6%B7%BB%E5%8A%A0%E7%9B%91%E6%B5%8B%E8%AF% ...

  5. hexdump related.

    hexdump format strings Tue 13 December 2005 In tips. Ian Wienand More from the "things you'd le ...

  6. Jmeter----连接mysql数据库及常见问题处理

    jmeter要链接mysql数据库,首先得下载mysql jdbc驱动包,(注:驱动包的版本一定要与你数据库的版本匹配,驱动版本低于mysql版本有可能会导致连接失败报错) 本人的数据为5.7.18, ...

  7. Robot Framework Selenium学习博客

    http://blog.csdn.net/tulituqi/article/details/21888059

  8. 解决CentOS7关闭/开启防火墙出现Unit iptables.service failed to load: No such file or directory.

    CentOS7中执行 service iptables start/stop 会报错Failed to start iptables.service: Unit iptables.service fa ...

  9. C#字符串(Sring)操作

    //字符串访问            //string s = "ABCD";            //Console.WriteLine(s[0]);//第0位字符       ...

  10. React Native踩坑之无法启动Debug

    问题 在chrome启动debug模式,连接不到地址 解决办法 在模拟器中,ctrl+m调出command,选择dev setting,然后设置debug地址为localhost:8081