wpf中使用svg图片

在wpf中,svg图片不能直接使用,但是我们知道,svg图片比png,jpg等图片都好点,原因就是它是矢量图片,不会变形。

一共4种方式:

第一种:

简单的svg,我们可以使用path来装载它

 
    pathTip.Data = (Geometry)this.FindResource("MessageOK");   //图标  来源于path文件
    pathTip.Fill = new SolidColorBrush(Colors.Green);  //图标的颜色

这种方式解决不了多个path的问题,也就是复杂的svg,解决不了。 

第二种:

使用SharpVectors开源的库,在nuget中,直接下载使用。

这种可以解决复杂的问题,但是在编译界面中,也就是在xaml文件中,是不显示svg图片的,只有在运行的时候,才能显示。

第三种:

1.先使用此工具进行转换https://download.csdn.net/download/u012563853/87866570

wpf中使用svg图片_第1张图片

2.拿到xaml中的内容,放到资源文件中,取名为abc

wpf中使用svg图片_第2张图片

3.使用

wpf中使用svg图片_第3张图片

4.代码


    
        
            
                
                    
                
                
                    
                        
                    
                    
                        
                    
                
                
                    
                        
                    
                    
                        
                    
                
            
        
    
    
        
            
                
            
        
    

第四种:

使用转换器,读取xaml文件

1.依然用这个工具,转换成2.xaml

wpf中使用svg图片_第4张图片

wpf中使用svg图片_第5张图片 

2. xaml代码

注意:图片的路径,以及增加资源中,否则显示不出来


    
        
    
    
        
            
                
            
        
    

3.转换器

using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Data;
using System.Windows.Markup;
using System.Windows.Media;
using System.Windows.Resources;

namespace WpfApp7
{
    public class DrawingImageConvert : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            Uri uri = new Uri(parameter.ToString(),UriKind.RelativeOrAbsolute);
            StreamResourceInfo info=Application.GetResourceStream(uri); 
            XamlReader reader = new XamlReader();
            return reader.LoadAsync(info.Stream) as DrawingGroup;

        }

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            return value;
        }
    }
}

4.效果

wpf中使用svg图片_第6张图片 

综上所述,从操作简单,功能最全来说,建议使用第四种,最起码图片转成xaml,不用复制了。

你可能感兴趣的:(WPF,wpf)