'da bir kapak modeli oluşturma WPF'de şerit desenleri oluşturabiliyordum, ancak XAML'de nasıl bir desen oluşturabilirim? WPF'de bunun için varsayılan bir benzer fırça var mı?WPF
WPF
cevap
Sen VisualBrush
kullanarak XAML yapabilirsiniz. Yalnızca örneğin Path
için veri değerlerini belirlemek gerekir:
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
Vektör grafik (Path) için Image
dönüştürme için kullanmak Inkscape
, ücretsiz ve çok kullanışlıdır ful. Daha fazla bilgi için bu bağlantıya bakınız: Daha iyi performans için
Vectorize Bitmaps to XAML using Potrace and Inkscape
Edit
şunları yapabilirsiniz Freeze()
böyle PresentationOptions
yardımıyla fırçalar:
<Window x:Class="MyNamespace.MainWindow"
xmlns:PresentationOptions="http://schemas.microsoft.com/winfx/2006/xaml/presentation/options" ...>
<VisualBrush x:Key="MyVisualBrush" PresentationOptions:Freeze="True" ... />
MSDN
alıntı:
Artık bir dondurucuyu değiştirmeye ihtiyacınız olmadığında, donma performans açısından avantaj sağlar. Bu örnekte fırçayı donduracak olursanız, grafik sisteminin artık değişiklikler için izlemesine gerek kalmayacaktı. Grafik sistemi diğer optimizasyonları da yapabilir, çünkü fırçanın değişmeyeceğini biliyor.
Burada başka yaklaşım kuluçka farklı bir stil için, var: Anatoliy
<Page
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:po="http://schemas.microsoft.com/winfx/2006/xaml/presentation/options"
Background="Black">
<Page.Resources>
<VisualBrush x:Key="HatchBrush" TileMode="Tile"
Viewport="0,0,5,5" ViewportUnits="Absolute"
Viewbox="0,0,5,5" ViewboxUnits="Absolute"
po:Freeze="True">
<VisualBrush.Visual>
<Path Data="M 0 5 L 5 0 M -2 2 L 2 -2 M 3 7 L 7 3"
Stroke="#80ffffff" StrokeEndLineCap="Square"
RenderOptions.EdgeMode="Aliased" />
</VisualBrush.Visual>
</VisualBrush>
</Page.Resources>
<Grid Background="{StaticResource HatchBrush}" />
</Page>
sayesinde bu kadar pahalı mı? 100 dikdörtgen gibi kullanacağım. – Vahid
@Vahid Bir şablon yapın ve her örnek için ayrı ayrı yerine bu şekilde yeniden kullanın. –
@Vahid: Bence her şeyden önce bunu XAML'ın yararına yapmaya çalışmamalısınız. Prensip olarak, WPF vektör grafikleri ile çalışacak şekilde optimize edilmiştir, böylece 'VisualBrush'ınızı' PresentationOptions 'yardımı ile dondurabilirsiniz, örneğin: PresentationOptions: Freeze = "True" '. Daha fazla bilgi için bkz. Bu ['link'] (http://www.codeproject.com/Articles/22716/Graphic-in-XAML-and-WPF). –