随笔分类 -  WPF

摘要:1. 前言 今天 ChokCoco 大佬发布了一篇博客 超强的苹果官网滚动文字特效实现,iPhone 我是买不起的,但不妨碍我对抄特效感兴趣,正好我这周安排的工作已经完成了,于是有空练练手实现了一个 WPF 版本。最终效果如下: 2. 原理 这个特效的原理在 ChokCoco 的文章里已经讲解得很详 阅读全文
posted @ 2022-10-22 00:42 dino.c 阅读(4759) 评论(13) 推荐(29) 编辑
摘要:1. 融合效果 融合效果是指对两个接近的元素进行高斯模糊后再提高对比度,使它们看上去“粘”在一起。在之前的一篇文章中,我使用 Win2D 实现了融合效果,效果如下: 不过 Win2D 不适用于 WPF,在 WPF 中可以使用 BlurEffect 配合自定义 Effect 实现类似的效果。Handy 阅读全文
posted @ 2022-09-27 09:04 dino.c 阅读(3732) 评论(15) 推荐(40) 编辑
摘要:1. 前言 最近需要一个 WPF 的表盘控件,之前 Cyril-hcj 写过一篇不错的博客 《WPF在圆上画出刻度线》,里面介绍了一些原理及详细实现的代码: double radius = BackEllipse.Width / 2; double min = 0; double max = 100 阅读全文
posted @ 2022-08-31 09:28 dino.c 阅读(3898) 评论(6) 推荐(41) 编辑
摘要:1. 可变字体 上图中的两个动画,一个文字直接变粗,一个渐渐变粗,我觉得后者会更有趣。但普通的字体可达不到这种效果,例如微软雅黑,无论怎么调整它的 FontWeight,实际上它也只有三种粗细: 这时候我们需要可变字体,可变字体(Variable fonts)是OpenType字体规范上的演进,它允 阅读全文
posted @ 2022-03-27 23:00 dino.c 阅读(1262) 评论(0) 推荐(18) 编辑
摘要:最近在学习怎么用 Shazzam Shader Editor 编写自定义的 Effect,并试着去实现阴影、内阴影和长阴影的效果。结果我第一步就放弃了,因为阴影用到的高斯模糊算法对我来说太太太太太太太太难了,最后只好用些投机取巧的方法来模仿这几种效果。 1. 阴影 WPF 中的 DropShadow 阅读全文
posted @ 2022-02-26 22:45 dino.c 阅读(3659) 评论(3) 推荐(10) 编辑
摘要:1. 前言 几个月前 ChokCoco 大佬发布了一篇文章: CSS 奇技淫巧 | 妙用 drop-shadow 实现线条光影效果 在文章里实现了一个发光的心形线条互相追逐的效果: 现在正好有空就试试用 WPF 实现一下。在实现过程中我用到这些知识和技巧: Segoe Fluent 图标字体 在 B 阅读全文
posted @ 2022-01-13 09:10 dino.c 阅读(5262) 评论(24) 推荐(50) 编辑
摘要:1. 来源 继上一篇文章模仿了一下这个按钮,这篇文章索性抄一下,连动画都模仿过来,顺便熟习下 CSS3。原版: 纯CSS3实现质感细腻丝滑按钮 2. 实现 第一步 <ContentPresenter.Effect> <DropShadowEffect BlurRadius="2" Direction 阅读全文
posted @ 2021-12-24 16:39 dino.c 阅读(1305) 评论(1) 推荐(5) 编辑
摘要:在 WPF 中,我们通常用 DropShadow 做阴影效果,但都是做外阴影。内阴影(Inner Shadow)的话其实也不是不可以,就是有些曲折。这篇文章介绍几种做内引用的做法。 文章涉及到以下概念: UIElement.ClipToBounds 属性 (System.Windows) UIEle 阅读全文
posted @ 2021-12-24 15:36 dino.c 阅读(2331) 评论(5) 推荐(13) 编辑
摘要:之前在一篇文章(实现两个任天堂 Switch 的加载动画)里为了实现不同亮度的 Grid,使用了一个 LightenConverter 类,但是它只能处理 SolidColorBrush。为了可以应用在更多场合,这篇文章自己写一个 Effect 来实现相同 Lighten 的效果。 1. WPF 中 阅读全文
posted @ 2021-12-22 09:11 dino.c 阅读(866) 评论(1) 推荐(7) 编辑
摘要:1. UWP 的 Text Shimmer 动画 在 UWP 的 Windows Composition Samples 中有一个 Text Shimmer 动画,它用于展示如何使用 Composition Light。从下面的 Gif 可以看到,这个动画很简单,就是用 PointLight 从左到 阅读全文
posted @ 2021-12-16 09:25 dino.c 阅读(2384) 评论(7) 推荐(20) 编辑
摘要:写了两个 Switch 的加载动画,第一个是 Swtich 最常见那个 Loading 动画: 其中拆分文字用到了 之前一篇文章 里提到的用 ItemsControl 拆分的方案,文字逐个反转的动画也用了那篇文章里提到的 TimeSpanIncreaser 来控制 BeginTime: <Story 阅读全文
posted @ 2021-12-10 09:28 dino.c 阅读(1407) 评论(5) 推荐(9) 编辑
摘要:继续玩玩彩虹文字,这次用 LinearGradientBrush 并且制作成按钮,虽然没技术含量反而有些实用,这就是返璞归真吗。 首先来回忆下 LinearGradientBrush 的用法。LinearGradientBrush 表示线性渐变的画刷,它的 StartPoint 和 EndPoint 阅读全文
posted @ 2021-11-09 12:38 dino.c 阅读(1181) 评论(2) 推荐(7) 编辑
摘要:本文将简单介绍如何仅使用 Rectangle 实现圆柱形进度条,成果如上图所示。 圆柱形进度条不难实现,不过有趣的是它完全由代表矩形的 Rectangle 组成,这稍微有点反直觉。 首先我们需要重温一些基础知识:Rectangle 显示带圆角的矩形。用 RadiusX 和 RadiusY 可分别指定 阅读全文
posted @ 2021-11-08 14:23 dino.c 阅读(1455) 评论(5) 推荐(2) 编辑
摘要:1. 前言 兴致来了玩玩 WPF 的彩虹文字。不是用 LinearGradientBrush 制作渐变色那种,是指每个文字独立颜色那种彩虹文字。虽然没什么实用价值,但希望这篇文章里用 ItemsControl 拆分文字,以及用工具类提供递增和随机变量的做法可以给读者一些启发,就好了。 2. 用 Te 阅读全文
posted @ 2021-11-08 09:19 dino.c 阅读(5109) 评论(27) 推荐(40) 编辑
摘要:1. 需求 前天看到有人问弧形进度条怎么做,我模仿了一下,成果如下图所示: 当时我第一反应是可以用 Microsoft.Toolkit.Uwp.UI.Controls 里的 RadialGauge 实现,虽然这是个 UWP 的控件,不过代码没有很复杂,应该很轻松就能移植到 WPF: 但仔细想想,我实 阅读全文
posted @ 2021-11-03 14:41 dino.c 阅读(4133) 评论(9) 推荐(23) 编辑
摘要:1. Windows 11 的圆角 在直角统治了微软的 UI 设计多年以后,微软突然把直角骂了一顿,说还是圆角好看,于是 Windows 11 随处都可看到圆角设计。Windows 11 使用 3 个级别的圆角,具体取决于要应用圆角的 UI 组件及该组件相对于相邻元素的排列方式。 圆角半径 使用情况 阅读全文
posted @ 2021-11-01 09:32 dino.c 阅读(2046) 评论(9) 推荐(9) 编辑
摘要:1. 什么是 MVVM Toolkit 模型-视图-视图模型 (MVVM) 是用于解耦 UI 代码和非 UI 代码的 UI 体系结构设计模式。 借助 MVVM,可以在 XAML 中以声明方式定义 UI,并使用数据绑定标记将 UI 链接到包含数据和命令的其他层。 微软虽然提出了 MVVM,但又没有提供 阅读全文
posted @ 2021-08-19 22:31 dino.c 阅读(17065) 评论(25) 推荐(49) 编辑
摘要:1. 什么是AppCenter Visual Studio App Center 是几个常见移动开发和云集成服务(如持续集成、持续交付和自动 UI 测试等服务)的集合。 这些 App Center 服务可以针对 iOS、Android、WPF/Winforms、通用 Windows 平台 (UWP) 阅读全文
posted @ 2021-07-21 09:10 dino.c 阅读(1359) 评论(5) 推荐(3) 编辑
摘要:1. 使用 PowerShell 脚本 在上一篇文章中我们学会了怎么使用扩展在编译前实时更改版本号。有些情况下我们希望不适用扩展,例如喜欢发明轮子,或者根本没有安装扩展的权限。这时候我们可以自己写 PowerShell 解决这个问题。 在 Pipeline 中添加一个 PowerShell 的任务, 阅读全文
posted @ 2021-06-23 09:07 dino.c 阅读(436) 评论(0) 推荐(1) 编辑
摘要:1. 需求 在使用 Pipeline 自动化 CI/CD 流程的过程中,我还还需要自动修改程序集的版本号。这个功能 EdiWang 和LeoLaw 都写文章讲解过做法。不过我的项目基本都是 .Net Framework 项目,而且我的版本号规则也不一样,所以这里分享一下我的做法。 我用的规则版本号规 阅读全文
posted @ 2021-06-21 09:43 dino.c 阅读(587) 评论(2) 推荐(1) 编辑