Avalonia 界面效果 滚动的渐变矩形边框

news/2025/4/2 16:58:46/文章来源:https://www.cnblogs.com/lindexi/p/18803386

本文代码基于 Avalonia 11.2.x 版本实现,预期在其他 Avalonia 版本也能正常使用

本文效果由 晓嗔戈 提供,我只是记录此实现方法的工具人

界面效果如下图所示,录制的gif中颜色存在一些偏差,动画有些卡顿,实际效果要好一些

实现原理:

实现上不需要做平移或旋转,完全依靠对 Border 的 BorderBrush 边框做颜色动画即可实现。核心方法是通过 KeyFrame 关键帧动画设置几个关键点,对 Border 的 BorderBrush 边框添加渐变色动画,上图中不可见部分是设置了填充了透明色。渐变动画选用的是 ConicGradientBrush 类型的渐变色

即当 ConicGradientBrush 渐变动画对整个 Border 矩形背景填充时的效果如下

只将填充从背景换成 Border 的 BorderBrush 即可只对边框进行填充,相当于将中间的部分裁剪掉只保留边框的部分,从而实现本文一开始给出的效果

具体实现代码如下

本文内容里面只给出关键代码片段,如需要全部的项目文件,可到本文末尾找到本文所有代码的下载方法

先添加一个 Border 元素,设置 BorderThickness 的值,用于让其有边框厚度,可以被用来填充线条动画效果

<Border BorderThickness="5">
</Border>

设置 Border 的样式,添加动画效果,代码如下

            <Border BorderThickness="5"><Border.Styles><Style Selector="Border"><Style.Animations><Animation Duration="0:0:2"FillMode="Forward" IterationCount="INFINITE"><KeyFrame Cue="0%"><Setter Property="BorderBrush"><Setter.Value><ConicGradientBrush><GradientStops><GradientStop Color="#0000FFAA" Offset="0" /><GradientStop Color="#0000FFAA" Offset="0.65" /><GradientStop Color="#00FFAA" Offset="0.75" /><GradientStop Color="#0000FFAA" Offset="0.85" /></GradientStops></ConicGradientBrush></Setter.Value></Setter></KeyFrame><KeyFrame Cue="25%"><Setter Property="BorderBrush"><Setter.Value><ConicGradientBrush Angle="90"><GradientStops><GradientStop Color="#0000EAFF" Offset="0" /><GradientStop Color="#0000EAFF" Offset="0.65" /><GradientStop Color="#00EAFF" Offset="0.75" /><GradientStop Color="#0000EAFF" Offset="0.85" /></GradientStops></ConicGradientBrush></Setter.Value></Setter></KeyFrame><KeyFrame Cue="50%"><Setter Property="BorderBrush"><Setter.Value><ConicGradientBrush Angle="180"><GradientStops><GradientStop Color="#0000FFAA" Offset="0" /><GradientStop Color="#0000FFAA" Offset="0.65" /><GradientStop Color="#00FFAA" Offset="0.75" /><GradientStop Color="#0000FFAA" Offset="0.85" /></GradientStops></ConicGradientBrush></Setter.Value></Setter></KeyFrame><KeyFrame Cue="75%"><Setter Property="BorderBrush"><Setter.Value><ConicGradientBrush Angle="270"><GradientStops><GradientStop Color="#0000EAFF" Offset="0" /><GradientStop Color="#0000EAFF" Offset="0.65" /><GradientStop Color="#00EAFF" Offset="0.75" /><GradientStop Color="#0000EAFF" Offset="0.85" /></GradientStops></ConicGradientBrush></Setter.Value></Setter></KeyFrame><KeyFrame Cue="100%"><Setter Property="BorderBrush"><Setter.Value><ConicGradientBrush Angle="360"><GradientStops><GradientStop Color="#0000FFAA" Offset="0" /><GradientStop Color="#0000FFAA" Offset="0.65" /><GradientStop Color="#00FFAA" Offset="0.75" /><GradientStop Color="#0000FFAA" Offset="0.85" /></GradientStops></ConicGradientBrush></Setter.Value></Setter></KeyFrame></Animation></Style.Animations></Style></Border.Styles></Border>

如上简单的代码即可实现滚动的线条边框效果

本文代码放在 github 和 gitee 上,可以使用如下命令行拉取代码。我整个代码仓库比较庞大,使用以下命令行可以进行部分拉取,拉取速度比较快

先创建一个空文件夹,接着使用命令行 cd 命令进入此空文件夹,在命令行里面输入以下代码,即可获取到本文的代码

git init
git remote add origin https://gitee.com/lindexi/lindexi_gd.git
git pull origin 9437d15885006ca966046d66ad5ad239a7a22cba

以上使用的是国内的 gitee 的源,如果 gitee 不能访问,请替换为 github 的源。请在命令行继续输入以下代码,将 gitee 源换成 github 源进行拉取代码。如果依然拉取不到代码,可以发邮件向我要代码

git remote remove origin
git remote add origin https://github.com/lindexi/lindexi_gd.git
git pull origin 9437d15885006ca966046d66ad5ad239a7a22cba

获取代码之后,进入 AvaloniaIDemo/LowhawleluhaLelradealere 文件夹,即可获取到源代码

更多技术博客,请参阅 博客导航

相关的 WPF 的线条动画,请参阅 WPF使用Shape实现复杂线条动画 - czwy - 博客园

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/909346.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Avalonia 界面效果 三个圆实现模糊界面动效背景

本文将和大家介绍一个 Avalonia 动效界面效果,由三个圆带模糊效果实现的模糊界面动效背景,适合用在各种 AIGC 主题的应用里面本文代码基于 Avalonia 11.2.x 版本实现,预期在其他 Avalonia 版本也能正常使用 本文效果由 晓嗔戈 提供,我只是记录此实现方法的工具人 界面效果如…

儿子的画

昨天儿子在幼儿园学习了自制小册子,并在上面画画。 晚上睡觉前,心血来潮想要再展示一下他在学校是怎么弄的,于是又一顿操作起来,动作还算麻利,只是完成之后都已过十点了,非要我们帮他配上文字,我一开始不明就理,以为写个标题就好了..., 但最后终于搞懂他是要我帮忙下一…

团队协作管理:贝尔宾团队角色模型学习

“没有完美的个人,只有完美的团队。” 任何企业的领导者要想使自己的企业能够快速地发展和成长,就必须对团队建设的重要性有正确的认识。团队角色理论 团队角色理论是管理学中用于分析和优化团队协作的重要理论,可以帮助管理者认识人才、选拔人才,组建高效率合作团队。也可…

钉钉 + AI 网关给 DeepSeek 办入职

通过 Open-WebUI 在企业内部部署一套 DeepSeek 只是第一步,给 DeepSeek 办理入职,在钉钉等企业通讯工具上和 DeepSeek 对话才是真时尚。通过 Open-WebUI 在企业内部部署一套 DeepSeek 只是第一步,给 DeepSeek 办理入职,在钉钉等企业通讯工具上和 DeepSeek 对话才是真时尚。…

网络工程师修仙指北---STP(Spanning Tree Protocol)

网络工程师修仙指北---STP(Spanning Tree Protocol) Hello哇,欢迎来到《网络工程是修仙指北系列》,今天我们接着上一篇VLAN的内容,继续为大家介绍网络交换二层技术中另一个重要的内容---STP 一口小酒🍸,一首歌📻,阿轩带你修成仙! 上一篇中我们讲到,通过VLAN的技术…

「通义灵码+X」公开课开讲啦!和赛博同桌一起完成开发任务 有奖励

在AI技术重塑未来的今天,阿里云通义灵码团队携手高校开发者,推出「通义灵码+X系列公开课」暨赛博同桌计划,为编程学习注入全新活力!活动将于2025年3月12日至4月30日火热进行,无论你是技术小白还是代码达人,都能在这里找到与AI并肩学习的乐趣,赢取限定好礼!让AI成为你的…

云原生 Kafka 问卷调研启动,你的声音很重要!参与赢精美礼品!

Apache Kafka 作为高吞吐的分布式消息系统,支持实时数据采集、传输、存储及处理,广泛应用于日志收集、监控数据聚合、流式数据处理、在线和离线分析等场景,是大数据生态的核心组件。然而,随着云计算的快速发展,传统 Kafka 架构在云环境中的局限性日益凸显。Apache Kafka 作…

掌握FastAPI与Pydantic的跨字段验证技巧

title: 掌握FastAPI与Pydantic的跨字段验证技巧 date: 2025/04/01 00:32:07 updated: 2025/04/01 00:32:07 author: cmdragon excerpt: FastAPI中的Pydantic跨字段一致性验证用于处理用户注册、表单提交等场景中多个字段的联合验证需求。Pydantic通过验证器装饰器和根验证器实…

使用 Ollama 本地模型与 Spring AI Alibaba 的强强结合,打造下一代 RAG 应用

使用 Ollama 本地模型与 Spring AI Alibaba 的强强结合,打造下一代 RAG 应用作者:牧生 Spring AI Alibaba RAG Example 示例项目源码地址: https://github.com/springaialibaba/spring-ai-alibaba-examples/tree/main/spring-ai-alibaba-rag-example RAG 应用架构概述 1.1 核…

【2025】简易实用知网爬虫,过程加代码

知网是中国最大的学术文献数据库,包含了大量期刊、会议论文、学位论文和报纸等学术资源。尽管知网提供了强大的在线搜索功能,但用户有时需要通过程序自动化地获取大量文章信息。这时,我们会使用爬虫技术来帮助完成这项任务。 工具选择和前提条件 本次爬取工作,我们选择了 P…

RabbitMQ进阶--分布式事务案例

本节主要讲述一个案例,是使用rabbitmq实现分布式事务,本章从分布式事务以sping的声明式事务,转而到rabbitMQ的分布式事务,一下环境需要的依赖:<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp<…

[Rust] 首次接触Rust

最近听闻Rust已经逐步进入了Linux Kernel,而且一个很好用的软件yazi也是rust开发的,所以想了解一下rust的开发和使用。基本操作 官网 官网:快速配置 Rust 开发环境并编写一个小应用! 官方练习环境:Rust演练场 官方教材:学习Rust 下载 curl --proto =https --tlsv1.2 -sSf…