Ответ 1
Вы можете сделать это в XAML, используя VisualBrush
. Вам нужно указать только значения данных для Path
, например:
XAML
<Window.Resources>
<VisualBrush x:Key="MyVisualBrush" TileMode="Tile" Viewport="0,0,15,15" ViewportUnits="Absolute" Viewbox="0,0,15,15" ViewboxUnits="Absolute">
<VisualBrush.Visual>
<Grid Background="Black">
<Path Data="M 0 15 L 15 0" Stroke="Gray" />
<Path Data="M 0 0 L 15 15" Stroke="Gray" />
</Grid>
</VisualBrush.Visual>
</VisualBrush>
</Window.Resources>
<Grid Background="{StaticResource MyVisualBrush}">
<Label Content="TEST" Foreground="White" HorizontalAlignment="Center" VerticalAlignment="Center" />
</Grid>
Output
Для преобразования Image
в векторную графику (путь) используйте Inkscape
, что является бесплатным и очень полезным. Для получения дополнительной информации см. Эту ссылку:
Vectorize Bitmaps to XAML using Potrace and Inkscape
Edit
Для повышения производительности вы можете Freeze()
использовать кисти с помощью PresentationOptions
следующим образом:
<Window x:Class="MyNamespace.MainWindow"
xmlns:PresentationOptions="http://schemas.microsoft.com/winfx/2006/xaml/presentation/options" ...>
<VisualBrush x:Key="MyVisualBrush" PresentationOptions:Freeze="True" ... />
Цитата из MSDN
:
Когда вам больше не нужно модифицировать замораживаемое, замораживание обеспечивает преимущества производительности. Если вы хотите заморозить кисть в этом примере, графической системе больше не нужно будет отслеживать ее для изменений. Графическая система также может выполнять другие оптимизации, поскольку она знает, что кисть не изменится.