Как сохранить и получить несколько фигур в XAML / WPF? - PullRequest
3 голосов
/ 02 февраля 2009

Кажется, у меня много проблем с выполнением простых задач с XAML / WPF - я создал несколько изображений на основе XAML, используя формы, такие как Rectangle и Ellipse, для создания иконок, которые мне нужны для других частей моего приложения - но я не могу понять, как это сделать - мне кажется, что я могу сохранить холст в словаре ресурсов, но не могу использовать его в любом другом окне. Как это сделать - это простые изображения двух или трех форм, которые я хочу использовать в своем проекте!
Размеры изображений также должны быть изменяемого размера - я знаю, как хранить контуры, однако эти фигуры содержат стили градиентов, которые я хочу сохранить, плюс я не знаю, как прямоугольник мог бы преобразовать данные траектории и цвета.

Спасибо! * * 1004

Ответы [ 2 ]

7 голосов
/ 03 февраля 2009

Вы должны использовать Drawing и отображать его, используя DrawingBrush, как предложил KP Adrian, или DrawingImage и элемент управления Image, но если вы не можете использовать чертеж, вы можете использовать Canvas внутри VisualBrush.

<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Page.Resources>
    <VisualBrush x:Key="Icon">
        <VisualBrush.Visual>
            <Canvas Width="10" Height="10">
                <Ellipse Width="5" Height="5" Fill="Red"/>
                <Ellipse Width="5" Height="5" Fill="Blue" Canvas.Left="5" Canvas.Top="5"/>
            </Canvas>
        </VisualBrush.Visual>
    </VisualBrush>
</Page.Resources>
    <Rectangle Width="100" Height="100" Fill="{StaticResource Icon}"/>
</Page>
3 голосов
/ 02 февраля 2009

Вы не хотите использовать Canvas для хранения этих ресурсов в Словаре ресурсов. Корень вашей геометрии, вероятно, похож на DrawingBrush (особенно если вы использовали Expression Design для создания изображений), и это элементы, которые необходимо добавить в словарь ресурсов, например:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <DrawingBrush x:Key="YourResourceKey">
<DrawingBrush.Drawing>
<DrawingGroup>
<!-- This can change a lot, but a typical XAML file exported from a Design image would have the geometry of the image here as a bunch of Paths or GeometryDrawings -->
</DrawingGroup>
</DrawingBrush.Drawing>
</ResourceDictionary>

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

Чтобы использовать Ресурсы, вы просто должны назначить их соответствующим свойствам. Для изображений в форме фигуры вы можете назначить им что-то вроде свойства Fill прямоугольника (есть много других способов, но это простой способ). Вот один пример:

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