Avalonia常用小控件Svg

本文介绍了使用Avalonia框架的示例,包括UI库Semi.Avalonia和SVG库Avalonia.Svg.Skia的应用,展示了如何在XAML中预览SVG图像以及后台加载SVG的代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.项目下载地址:https://gitee.com/confusedkitten/avalonia-demo

2.UI库Semi.Avalonia,项目地址  https://github.com/irihitech/Semi.Avalonia

3.SVG库,Avalonia.Svg.Skia,项目地址 https://github.com/wieslawsoltes/Svg.Skia

4.样式预览:

 5.Svg.axaml

<UserControl xmlns="https://github.com/avaloniaui"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
             x:Class="AvaloniaDemo.Pages.Svg">
	<StackPanel Orientation="Horizontal" VerticalAlignment="Top">
		<StackPanel Height="100" Width="100" Margin="20 0 20 0" >
			<TextBlock Text="这是一个png"/>
			<Image Source="../Assets/Images/JiaHao.png" Height="25" Width="25"/>
		</StackPanel>

		<StackPanel Height="100" Width="100" Margin="20 0 20 0" >
			<TextBlock Text="这是一个svg"/>
			<Svg Path="/Assets/Images/__tiger.svg" Stretch="Uniform" />
		</StackPanel>

		<StackPanel Height="100" Width="120" Margin="20 0 20 0"  IsVisible="True">
			<TextBlock Text="后台代码设置的svg"/>
			<Image x:Name="ShowImage" VerticalAlignment="Center"  HorizontalAlignment="Center" Height="100" Width="100" Stretch="Uniform"/>
		</StackPanel>
	</StackPanel>
</UserControl>

  6.Svg.axaml.cs

using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
using Avalonia.Svg.Skia;
using System.IO;
using System;
using Avalonia.Interactivity;
using Avalonia.Controls.Shapes;

namespace AvaloniaDemo.Pages;

public partial class Svg : UserControl
{
    public Svg()
    {
        InitializeComponent();
        Loaded += WindowLoaded;
    }

    private void WindowLoaded(object? sender, RoutedEventArgs e)
    {
        string baseurl = Directory.GetCurrentDirectory();
        var imagepath = System.IO.Path.Combine(baseurl, @"Assets\Images\new 4.svg");
        var ImageByte = File.ReadAllBytes(imagepath);
        var svgSource = ByteArrayToDrawingImage(ImageByte);
        ShowImage.Source = svgSource;
    }

    public SvgImage? ByteArrayToDrawingImage(Byte[] byteArray)
    {
        if (byteArray == null || byteArray?.Length == 0) return default;
        using (MemoryStream documentStream = new MemoryStream(byteArray))
        {
            try
            {
                var svg = new SvgSource();
                var picture = svg.Load(documentStream);
                if (picture is { })
                {
                    var svgImage = new Avalonia.Svg.Skia.SvgImage() { Source = svg };
                    return svgImage;
                }
            }
            catch (Exception ex)
            {

            }
        }
        return default;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值