Я хочу преобразовать изображение SVG в любой IconSource, чтобы использовать его в TabViewItem.IconSource
BitmapIconSource icon = new()
{
UriSource = new Uri("http://url/image.svg"),//This doesn't work, BitmapIconSource cannot render svg
ShowAsMonochrome = false,
};
TabViewItem.IconSource = icon;
SVGImageSource
нельзя использовать в IconSource
. Могу ли я преобразовать SVG в IconSource или мне нужно установить его непосредственно в TabViewItem.Header
вот так?
SvgImageSource ImageSource = new() { UriSource = new Uri("http://url/image.svg") };
ImageIcon SVGIcon = new() { Source= ImageSource };
SVGIcon.Width = 15;
SVGIcon.Height = 15;
TabViewItem.Header = SVGIcon;
Работает ли он с локальным файлом SVG? Также обязательно используйте WinAppSDK v1.5.240607001 или новее, чтобы избежать этой проблемы.
Я не думаю, что PathIconSource
сможет прочитать файл svg, потому что svg немного похож на html, а значок пути использует команду
Я использую WinAppSDK 1.6. Bitmapicon не работает ни с одним SVG. Но источник SVGImage работает по той же ссылке.
Вы можете преобразовать изображение SVG в данные пути и использовать его с PathIcon?
Согласно комментарию @AndrewKeepCoding, я тестировал локальный файл svg, и он работает. Вы можете использовать их как локальные файлы SVG.
Я не нашел способов конвертировать SVG в данные пути. И я попробовал локальный файл SVG на TabViewItem.IconSource = new BitmapIconSource(){ UriSource = new Uri("C://localpath/name.svg")}
, но он не работает.
Вам необходимо включить изображение SVG в свой проект и установить для параметра «Действие сборки» значение «Содержимое». BitmapIconSource bitmapSource = new() { UriSource = new Uri("ms-appx:///Assets/TestSVG.svg"), ShowAsMonochrome = false, };
Использование BitmapIconSource с SVG не будет работать. SVG — это не растровые изображения. Добавляете ли вы файлы SVG в качестве файлов содержимого в свой проект, не имеет значения.
Вы бы использовали ImageIconSource
(вместо BitmapIconSource
) с SvgImageSource
вот так:
using Microsoft.UI.Xaml.Controls;
using Microsoft.UI.Xaml.Media.Imaging;
...
var icon = new ImageIconSource
{
ImageSource = new SvgImageSource(new Uri("http://url/image.svg"))
};
tabViewItem.IconSource = icon;
Могу ли я установить свойство ImageSource в SVGImageSource? Потому что в документе ImageIconSource
сказано: «ImageSource: uri файла изображения».
Почему бы вам просто не попробовать код в ответе? Это, конечно, работает.
Лол, потому что я сейчас не могу пользоваться своим ноутбуком, извини.
Вы пробовали использовать
PathIconSource
? Я ничего не знаю о Winui, но этот тип говорит, что он предназначен для векторных путей и расширяетсяIconSource
.