#wpf
#wpf
Вопрос:
Я хочу отобразить SVG-файл в WPF, и я обнаружил, что многие люди рекомендуют использовать sharpvectors
.
Я использовал его с XAML, как показано ниже:
<Window x:Class="KongGamLung.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
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"
xmlns:local="clr-namespace:KongGamLung"
xmlns:SVG="http://sharpvectors.codeplex.com/svgc/"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid>
<SVG:SvgViewbox Source="Create.svg" AutoSize="True" OptimizePath="False" TextAsGeometry="True"></SVG:SvgViewbox>
</Grid>
</Window>
Что ж, SVG-файл корректно отображается в редакторе:
Однако после того, как я запустил программу, SVG исчез.
Почему получается так? Более того, я попробовал несколько SVG-пакетов в NUGET. Но они хуже этого, которые не могут отображаться даже в редакторе.
Как я могу это решить? И если есть SVG-пакет получше этого, пожалуйста, порекомендуйте его мне. Спасибо.
Комментарии:
1. Где у вас на компьютере находится файл Create.svg? Вы включили файл как ресурс в проект?
2. Я еще не отредактировал тему. Я создаю его с помощью Adobe illustrator и включил в качестве ресурса в проект. @MathivananKP
Ответ №1:
У вас есть 2 варианта.
- Если вы задаете для действия сборки svg-файла значение «Содержимое», то вам следует задать для параметра Копировать в выходной каталог значение «Копировать всегда» или «Копировать, если новее».
- Если вы установите для действия сборки svg-файла значение «Ресурс», оно будет использоваться как ресурс сборки, к которому можно получить доступ с помощью URI пакета файлов ресурсов.
Затем вы можете использовать его в XAML, как показано ниже, и вы можете установить Copy to Output Directory на «Не копировать».
<SVG:SvgViewbox Source="Create.svg"
AutoSize="True" OptimizePath="False" TextAsGeometry="True"/>
Комментарии:
1. Я использовал вариант 2, и он работает. Интересно, это из-за Visual Studio или sharpvectors? Я боюсь этих вещей, потому что оно не сообщает ни о какой ошибке.
2. Мне интересно, почему здесь необходим префикс Pack URI. Если вы задаете свойству Source элемента Image значение путь к ресурсам сборки, вы можете опустить его в XAML, поскольку анализатор XAML добавляет его автоматически.
Source="/Create.svg"
Возможно, работает?