Могу ли я использовать ViewBox в качестве источника изображения в WPF? - PullRequest
0 голосов
/ 08 июня 2019

У меня есть значок, который определен в XAML, а корневой элемент - Viewbox.Я хотел бы установить это как Source элемента Image.

Я пытался установить его непосредственно в качестве источника для изображения, например ...

<Button Margin='5'>
   <Image Source='{StaticResource IconKey}'></Image>
</Button>

Но я получил исключение.Есть ли способ сделать это?

Ответы [ 2 ]

1 голос
/ 08 июня 2019

Это довольно сложная тема для новичков, потому что есть так много «вещей», которые вам нужны, чтобы собраться с головой.

Я постараюсь охватить несколько вещей по этому вопросу. Надеюсь, это немного уменьшит ваше замешательство.

Путь использует данные, которые выглядят немного странно, чем со всеми этими странными координатами. Это может идти непосредственно по пути, или в геометрии (или геометрии потока). Если вы используете геометрию, то ее можно повторно использовать для красного, любого синего, чего угодно и т. Д. Это также не визуальное изображение, поэтому вы не попадетесь на глаза, имея только одного родителя - то есть одно использование в любой пользовательский интерфейс.

Я обычно так поступаю, если получаю единственную геометрию. Часто из syncfusion metro studio (которая является бесплатной библиотекой), но иногда я использую inkscape (бесплатно) для отслеживания растрового изображения или получаю путь из SVG.

Однако вы можете комбинировать две геометрии.

В словаре ресурсов, объединенном с app.xaml, вы можете иметь геометрию:

        <CombinedGeometry x:Key="TwoGeometriesInOne">
            <CombinedGeometry.Geometry1>
                <Geometry>
                   M3,1.6675c0,-0.1795..... and the rest of your first geometry data
                </Geometry>
            </CombinedGeometry.Geometry1>
            <CombinedGeometry.Geometry2>
               <Geometry>
                   M15.9289,7.776L5.285,....
                </Geometry>
            </CombinedGeometry.Geometry2>
        </CombinedGeometry>

Огромные длинные строки запутывают сайт, но эти две геометрии должны просто иметь M ... до z тех данных, которые вы используете для каждого пути.

Используйте это для кнопки (или любого другого элемента управления контентом)

    <Button Height="40" Width="40">
        <Path Fill="#3E79B4" Data="{StaticResource TwoGeometriesInOne}"
              Height="16"
              Width="16"
              Stretch="Fill"/>
    </Button>

Обратите внимание, что путь можно просто использовать сам по себе, а не на холсте и по размеру, его также можно растянуть, чтобы он соответствовал его размеру или тому, что позволяет родительский элемент.

Рассмотрим также:

    <Button Height="40" Width="40">
        <Path Fill="#3E79B4" Data="{StaticResource TwoGeometriesInOne}"
              Stretch="UniformToFill"
              Margin="5"
              />
    </Button>

На пути у вас есть заливка и обводка. Инсульт это контур. Если вам нужны разные цветные фигуры в одной «иконке», то рисунок рисунка с многократным геометрическим рисунком будет более подходящим, потому что каждый геометрический образ может иметь свою собственную кисть.

0 голосов
/ 08 июня 2019

Я нашел альтернативу.Вместо использования Image внутри кнопки я использовал атрибут Button Content.

<Button Content='{StaticResource IconKey}' />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...