随笔分类 -  C#

C#
摘要:在做 UWP 应用开发的时候还有什么理由可以用到加速度计呢?场景很多啦,比如做游戏,做类似 Surface Hub 那种一边旋转,一边所有内容跟着一起转的效果。 Windows 10 UWP 中的加速度计使用非常简单,只需要简单几句代码即可。 本文内容 重力迷宫游戏 初始化 Acceleromete 阅读全文
posted @ 2018-11-28 15:54 walterlv 阅读(858) 评论(0) 推荐(0) 编辑
摘要:Win2D 是 DirectX 的一个高层封装,提供了极大 DirectX 性能的同时,又具有很好用的 API 设计。 用 Win2D 除了能做出高性能的视觉效果之外,还可以轻而易举地搭建一个游戏循环出来。使用 Win2D 的游戏循环,你可以直接做出一个简单的游戏出来。 本文内容 使用 Win2D 阅读全文
posted @ 2018-11-28 15:51 walterlv 阅读(651) 评论(0) 推荐(0) 编辑
摘要:使用 Win2D 绘制图片和绘制椭圆都非常容易,可是如何使用 Win2D 绘制图片纹理的椭圆呢? 本文内容 重力迷宫小球 Win2D 实现 关于 CanvasCommandList 本文内容 重力迷宫小球 Win2D 实现 关于 CanvasCommandList 重力迷宫小球 Win2D 实现 关 阅读全文
posted @ 2018-11-28 15:49 walterlv 阅读(321) 评论(0) 推荐(0) 编辑
摘要:我们有很多种方法评估一个方法的执行耗时,比如使用性能分析工具,使用基准性能测试。不过传统的在代码中编写计时的方式依然有效,因为它可以生产环境或用户端得到真实环境下的执行耗时。 如果你希望在 .NET/C# 代码中编写计时,那么阅读本文可以获得一些建议。阅读本文也可以了解到 QueryPerforma 阅读全文
posted @ 2018-11-28 15:46 walterlv 阅读(1492) 评论(0) 推荐(0) 编辑
摘要:Windows Community Toolkit 再次更新到 5.0。以前可以在 WPF 中使用有限的 UWP 控件,而现在有了 WindowsXamlHost,则可以使用更多 UWP 原生控件了。 关于 Windows Community Toolkit 早期版本的 Xaml Bridge,可以 阅读全文
posted @ 2018-11-28 15:45 walterlv 阅读(2013) 评论(0) 推荐(0) 编辑
摘要:在 WindowsXamlHost:在 WPF 中使用 UWP 的控件(Windows Community Toolkit) 一文中,我们说到了在 WPF 中引入简单的 UWP 控件以及相关的注意事项。不过,通常更有实际价值的是更复杂的 UWP 控件的引入,通常是一整个 Page。 本文将介绍如何在 阅读全文
posted @ 2018-11-28 15:37 walterlv 阅读(1761) 评论(0) 推荐(0) 编辑
摘要:不知你是否见过 try { } finally { } 代码中,try 块留空,而只往 finally 中写代码的情况呢?这种写法有其特殊的目的。 本文就来说说这种不一样的写法。 本文内容 空的 try 块 受约束的执行区域(Constrained Execution Regions) 参考资料 本 阅读全文
posted @ 2018-11-28 15:33 walterlv 阅读(291) 评论(0) 推荐(0) 编辑
摘要:大家都说反射耗性能,但是到底有多耗性能,哪些反射方法更耗性能;这些问题却没有统一的描述。 本文将用数据说明反射各个方法和替代方法的性能差异,并提供一些反射代码的编写建议。为了解决反射的性能问题,你可以遵循本文采用的各种方案。 本文内容 反射各方法的性能数据 反射的高性能开发建议 创建类型的实例 反射 阅读全文
posted @ 2018-11-05 10:34 walterlv 阅读(1752) 评论(0) 推荐(2) 编辑
摘要:路 2018 年 10 月 23 日中午,我和林德熙踏上了前往上海的旅程。这是德熙第一次进行如此长途的旅行,之前几乎一直待在家里。 微软技术暨生态大会是从 10 月 25 日到 10 月 27 日,而 10 月 24 日是微软合作伙伴会议。我们当初在制定行程时,并没有意识到微软合作伙伴会议与微软技术 阅读全文
posted @ 2018-10-31 15:05 walterlv 阅读(258) 评论(0) 推荐(0) 编辑
摘要:Windows 10 自 1703 开始引入第二代的多屏 DPI 机制(PerMonitor V2),而 WPF 框架可以支持此第二代的多屏 DPI 机制。 本文将介绍 WPF 框架利用第二代多屏 DPI 机制进行高 DPI 适配的方法。同时,也介绍低版本的 WPF 或者低版本的操作系统下如何做兼容 阅读全文
posted @ 2018-10-28 18:35 walterlv 阅读(907) 评论(0) 推荐(0) 编辑
摘要:本文将介绍 Windows 系统中高 DPI 开发的基础知识。由于涉及到坐标转换,这种转换经常发生在计算的不知不觉中;所以无论你使用哪种 Windows 下的 UI 框架进行开发,你都需要了解这些内容,以免不断踩坑。 <!-- ![Windows 高 DPI 应用开发课件](/static/post 阅读全文
posted @ 2018-10-28 16:51 walterlv 阅读(1699) 评论(0) 推荐(1) 编辑
摘要:我们在 WPF 中使用绑定时可以使用 ElementName=Foo 这样的写法,并且还能够真的在运行时找到这个名称对应的对象,是因为 WPF 中提供了名称范围概念。 实现 INameScope 接口可以定义一个名称范围。无论你使用 Name 属性还是使用 x:Name 特性都可以在一个名称范围内指 阅读全文
posted @ 2018-10-28 13:01 walterlv 阅读(316) 评论(0) 推荐(0) 编辑
摘要:在 Binding 中使用 ElementName 司空见惯,没见它出过什么事儿。不过当你预见 ContextMenu,或者类似 Grid.Row / Grid.Column 这样的属性中设置的时候,ElementName 就不那么管用了。 本文将解决这个问题。 本文内容 以下代码是可以正常工作的 阅读全文
posted @ 2018-10-28 11:47 walterlv 阅读(511) 评论(0) 推荐(0) 编辑
摘要:.NET/C# 程序从 Main 函数开始执行,基本上各种书籍资料都是这么写的。不过,我们可以写多个 Main 函数,然后在项目文件中设置应该选择哪一个 Main 函数。 你可能会觉得这样没有什么用,不过如果你的应用程序在不同的编译条件下有不同的启动代码,或者你需要持续去大范围修改启动代码,那么做一 阅读全文
posted @ 2018-10-28 11:41 walterlv 阅读(1294) 评论(0) 推荐(1) 编辑
摘要:Task 自带有很多等待任务完成的方法,有的是实例方法,有的是静态方法。有的阻塞,有的不阻塞。不过带超时的方法只有一个,但它是阻塞的。 本文将介绍一个非阻塞的带超时的等待方法。 Task 已有的等待方法 Task 实例已经有的等待方法有这些: ▲ Task 实例的等待方法 一个支持取消,一个支持超时 阅读全文
posted @ 2018-10-28 11:32 walterlv 阅读(1156) 评论(0) 推荐(0) 编辑
摘要:对象初始化器和集合初始化器只是语法糖,但是能让你的代码看起来更加清晰。至少能让对象初始化的代码和其他业务执行的代码分开,可读性会好一些。 本文将编写一个类型,可以使用集合初始化器构造这个类型。不只是添加元素的集合初始化器,还有带索引的集合初始化器。 稍微提一下对象初始化器 很普通的类型就可以支持对象 阅读全文
posted @ 2018-10-28 11:30 walterlv 阅读(402) 评论(0) 推荐(0) 编辑
摘要:在 UWP 中使用 CommandBar 来迅速添加一组功能按钮是非常迅速的,是 UWP 中推荐的交互方案之一。也许你能见到 CommandBar 按你所需向下展开,不过可能更多数情况会看到 CommandBar 的展开方向是向上的。 本文将解释 CommandBar 的展开方向逻辑,并且提供多种方 阅读全文
posted @ 2018-10-28 11:14 walterlv 阅读(1416) 评论(0) 推荐(0) 编辑
摘要:微软技术暨生态大会(Tech Summit),2018 年在上海世博中心召开。这是最后一次的 Tech Summit 了;明年开始,中国大陆地区就要和其他国家和地区一样,进行全球 Ignite Tour 了。 我也有幸成为分会场讲师团队的一员,课程是《预编译框架 - 开发高性能应用》。内容就是我博客 阅读全文
posted @ 2018-10-15 08:46 walterlv 阅读(267) 评论(0) 推荐(0) 编辑
摘要:在 UWP 中,可以通过给空间直接设置属性或在 Style 中设置属性来定制空间的样式;不过这样的样式定义十分有限,比如按钮按下时的样式就没法儿设置。当然可以通过修改 Template 来设置控件的样式,然而 UWP 中控件的样式代码实在是太多太复杂了,还不容易从 Blend 中复制了大量代码出来改 阅读全文
posted @ 2018-09-26 21:15 walterlv 阅读(272) 评论(0) 推荐(0) 编辑
摘要:?? 操作符叫做 null-coalescing operator,即 null 合并运算符。如果此运算符的左操作数不为 null,则此运算符将返回左操作数;否则返回右操作数。 在微软的官方 C# 文档中,此操作符被定义为不可重载。不过我们有方法可以间接实现这样的重载。 本文内容 运算符重载 编写 阅读全文
posted @ 2018-09-26 21:13 walterlv 阅读(308) 评论(0) 推荐(0) 编辑