ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Avalonia 图形绘制:3 段增量 XAML 拼出完整环形进度条

Avalonia 图形绘制:3 段增量 XAML 拼出完整环形进度条 Avalonia 图形绘制3 段增量 XAML 拼出完整环形进度条【免费下载链接】AvaloniaDevelop Desktop, Embedded, Mobile and WebAssembly apps with C# and XAML. The future of .NET UI项目地址: https://gitcode.com/GitHub_Trending/ava/AvaloniaAvalonia 图形绘制只需要纯 XAML不写一行 C#一个Canvas画板加Arc、Ellipse、TextBlock三种基础元素就能画出带轨道和百分比读数的环形进度条在 Windows、macOS、Linux 上跨平台一致渲染。成品先行下面是一份可直接粘进任意 Avalonia 窗口的完整代码!-- 环形进度条65% 进度纯 XAML 实现 -- Canvas Width300 Height300 !-- 底轨道灰色完整圆环 -- Arc Canvas.Left24 Canvas.Top24 Width252 Height252 Stroke#D8D8D8 StrokeThickness16 StartAngle0 SweepAngle360/ !-- 白色圆心 -- Ellipse Canvas.Left40 Canvas.Top40 Width220 Height220 FillWhite/ !-- 进度弧顺时针扫过 234 度即 65% -- Arc Canvas.Left24 Canvas.Top24 Width252 Height252 Stroke#4EC9B0 StrokeThickness16 StartAngle0 SweepAngle234 Canvas.ZIndex1/ !-- 读数 -- TextBlock Canvas.Left118 Canvas.Top136 Text65% FontSize32/ TextBlock Canvas.Left114 Canvas.Top180 Text加载进度 FontSize13 ForegroundGray/ /Canvas画面构成一眼看穿灰色底环兜底青色弧段从右侧 3 点钟方向顺时针铺满 65%圆心白底上压着两行文字。概念对齐一张表看懂坐标系与定位属性概念一句话说明坐标系原点在画板左上角x 向右、y 向下单位是 DIP设备无关像素可写小数Canvas.Left/Canvas.Top子元素左/上边缘到画板边的距离同时给 Left 与 Right 时以 Left 为准都不给则停在原点Line两点定一段线StartPoint与EndPoint各给一个坐标src/Avalonia.Controls/Shapes/Line.csArcStartAngle定起点、SweepAngle定顺时针扫过的角度0 度在正右方src/Avalonia.Controls/Shapes/Arc.cs最小示例感受一下Arc的角度Canvas Width200 Height200 !-- 从 0 度顺时针画 90 度正好是一个 1/4 圆弧 -- Arc Width160 Height160 StrokeRed StrokeThickness10 StartAngle0 SweepAngle90/ /Canvas分步还原三步拼出进度环铺底轨道与白色圆心先立一个 300x300 的Canvas它自身不做任何排列只负责把子元素钉在坐标上src/Avalonia.Controls/Canvas.csSweepAngle360时Arc会退化成一整圈环。Canvas Width300 Height300 !-- SweepAngle360 画一整圈当灰色底轨 -- Arc Canvas.Left24 Canvas.Top24 Width252 Height252 Stroke#D8D8D8 StrokeThickness16 StartAngle0 SweepAngle360/ !-- 内圈白色圆心盖住轨道中间的空洞 -- Ellipse Canvas.Left40 Canvas.Top40 Width220 Height220 FillWhite/ /Canvas跑起来会看到一圈灰色粗环套着一个白色圆盘。叠出进度弧进度弧和底轨共用同一组坐标只靠SweepAngle控制长短百分比换算角度记住一行角度 百分比 x 360 / 10065% 就是 234 度。!-- 与底轨同坐标扫 234 度覆盖 65%ZIndex 保证压在灰环之上 -- Arc Canvas.Left24 Canvas.Top24 Width252 Height252 Stroke#4EC9B0 StrokeThickness16 StartAngle0 SweepAngle234 Canvas.ZIndex1/跑起来会看到青色弧段从 3 点钟方向沿顺时针铺过 234 度灰环只露出剩下的 35%。压上百分比读数TextBlock直接钉在圆心附近字号大一眼可读文字层与图形层互不干扰。!-- 数字压在圆心标签垫在下面 -- TextBlock Canvas.Left118 Canvas.Top136 Text65% FontSize32/ TextBlock Canvas.Left114 Canvas.Top180 Text加载进度 FontSize13 ForegroundGray/跑起来会看到圆心出现大号 65%下方一行小灰字标注含义整图完成。进阶三招叠放层次ZIndex挂在Visual基类上所有图形通吃数值大的渲染在上层同坐标竞争时靠它定胜负src/Avalonia.Base/Visual.cs。让弧段跟着数据动把SweepAngle绑到Slider的Value写{Binding ElementNameslider, PathValue, Converter{StaticResource PercentToAngle}}配一个换算器拖动滑块弧段实时伸缩src/Avalonia.Controls/Slider.cs。渲染性能多个短弧刻度别各建一条Arc合并进一个Path的Data绘制对象从 N 个减到 1 个复杂轮廓用StreamGeometry流式构建少做字符串拼接src/Avalonia.Base/Media/StreamGeometry.cs。速记与延伸左上原点x 右 y 下单位 DIP。角度 百分比 x 360 / 100。同坐标竞争ZIndex大的在上。延伸方向给进度弧挂RenderTransform用RotateTransform.AngleProperty配DoubleAnimationsrc/Avalonia.Base/Media/RotateTransform.cs环就能像加载指示器一样持续旋转。【免费下载链接】AvaloniaDevelop Desktop, Embedded, Mobile and WebAssembly apps with C# and XAML. The future of .NET UI项目地址: https://gitcode.com/GitHub_Trending/ava/Avalonia创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表