Подтвердить что ты не робот

Лучший способ использовать векторное изображение в WPF?

Я ищу хороший способ добавить векторный файл (EPS или SVG) в XAML. Я нашел плагин, который экспортирует изображение из Illustrator в XAML файл, скажем, MyImage.xaml, и он хорошо работает, если я скопирую содержимое файла в свой файл XAML для своего окна (ссылка плагина: http://www.mikeswanson.com/XAMLExport/).

Однако я уверен, что существуют лучшие способы. Можно ли, например, использовать MyImage.xaml в качестве ресурса или что-то еще, и импортировать его в XAML, который описывает окно?

4b9b3361

Ответ 1

Лично, если вы говорите об использовании его в нескольких местах, не переучивая/повторно рисовать пути xaml каждый раз. Затем я просто плюшу их в ContentControl, например:

<!-- Plop this in your resource dictionary or your resource declaration -->
    <Style x:Key="TheAwesomeXAMLimage" TargetType="ContentControl">
            <!-- Add additional Setters Here -->
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="ContentControl">

                                <!-- Just Paste your XAML here -->

                </ControlTemplate>
            </Setter.Value>
        </Setter>                      
    </Style>

<!-- Now actually place it on your view -->
    <ContentControl Style="{StaticResource TheAwesomeXAMLimage}"/>

Ответ 2

Используйте DrawingImage, как ваш контейнер, который предназначен для такой оболочки:

<MyWindow.Resources>
     <DrawingImage x:Key="diUndo">
         <DrawingImage.Drawing>
             <DrawingGroup>
                 <GeometryDrawing Brush="#FF22BAFD" Geometry="..."/>
             </DrawingGroup>
         </DrawingImage.Drawing>
     </DrawingImage> 
</MyWindow.Resources>

Затем повторно используйте его как таковое:

<Image Source="{DynamicResource diUndo}" />

но всегда будет тот цвет.....


Или укажите цвет

Сделайте вектор стилем, а затем динамически измените его на цель (его вектор, а не статическое изображение?), например, цвет заливки по мере необходимости:

 <MyWindow.Resources>
        <Path x:Key="vRedo"
              Data="F1M14.4401,25.5039C15.5755,22.9375 17.1667,20.5703 19.2162,18.5239 23.5781,14.1587 29.3828,11.7539 35.5573,11.7539 41.7344,11.7539 47.5365,14.1587 51.8984,18.5239 56.263,22.8879 58.6667,28.6899 58.6667,34.8645 58.6667,41.0391 56.263,46.8411 51.8984,51.2056 51.2031,51.8997 50.2917,52.2461 49.3828,52.2461 48.474,52.2461 47.5599,51.8997 46.8646,51.2056 45.4818,49.8164 45.4818,47.5664 46.8698,46.177 49.8932,43.1563 51.5573,39.1392 51.5573,34.8645 51.5573,30.5911 49.8932,26.5728 46.8646,23.552 43.849,20.5273 39.8307,18.8645 35.5573,18.8645 31.2813,18.8645 27.2656,20.5273 24.2448,23.552 22.0052,25.7915 20.5182,28.5845 19.8932,31.6184L27.5573,40.1992 5.33334,40.1992 7.10938,17.2969 14.4401,25.5039z" />
        <Style x:Key="ModifiablePathStyle"
               TargetType="{x:Type Path}">
            <Setter Property="Stretch"
                    Value="Uniform" />
            <Setter Property="Data"
                    Value="{Binding Data, Source={StaticResource vRedo}}" />
        </Style>
 </MyWindow.Resources>

Вот его использование:

<Path Style="{StaticResource ModifiablePathStyle}" Fill="Blue"/>
<Path Style="{StaticResource ModifiablePathStyle}" Fill="Red"/>
<Path Style="{StaticResource ModifiablePathStyle}" Fill="Green"/>

Вот результат всех трех:

enter image description here

Ответ 3

Если вы не против использования сторонних инструментов, см. SharpVectors. Он отлично справляется с SVG: анализ, преобразование XAML, отображение и т.д.

Изменить: я, возможно, не понял ваш вопрос, вы можете быть лучше с Крисом W. ответ;)