Byłem w stanie tworzyć wzorce pasków w WPF, ale jak utworzyć taki wzór w XAML? Czy istnieje domyślny pędzel podobny do tego w WPF?Tworzenie wzoru kreskowania w WPF
Odpowiedz
Można to zrobić w XAML za pomocą VisualBrush
. Wystarczy tylko podać wartości dane dla Path
, na przykład:
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
Do konwersji Image
do grafiki wektorowej (path) używać Inkscape
, która jest darmowa i bardzo przydatna ful. Aby uzyskać więcej informacji, zobacz ten link:
Vectorize Bitmaps to XAML using Potrace and Inkscape
Edit
dla lepszej wydajności, możesz Freeze()
ty Szczotki z pomocą PresentationOptions
tak:
<Window x:Class="MyNamespace.MainWindow"
xmlns:PresentationOptions="http://schemas.microsoft.com/winfx/2006/xaml/presentation/options" ...>
<VisualBrush x:Key="MyVisualBrush" PresentationOptions:Freeze="True" ... />
Cytat MSDN
:
Gdy nie trzeba już modyfikować zamrożenia, zapewnia ono korzyści związane z wydajnością. Jeśli w tym przykładzie miałbyś zamrozić pędzel, system graficzny nie musiałby już go monitorować w celu wprowadzenia zmian. System graficzny może również wykonywać inne optymalizacje, ponieważ wie, że pędzel się nie zmieni.
Oto inne podejście, na innym stylu wylęgu:
<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>
- 1. Niestandardowy przykład wzoru polecenia WPF
- 2. Jak zmienić szerokość linii kreskowania w matplotlib?
- 3. Jak zmniejszyć gęstość kreskowania w matplotlib
- 4. Jak mogę skalować kreskowania rysowane w prostokącie?
- 5. Tworzenie GUI szachowego w WPF
- 6. Tworzenie pionowego menu w Wpf
- 7. Tworzenie pędzla paskiem w WPF
- 8. Tworzenie niestandardowych formularzy w WPF?
- 9. Tworzenie panelu zwijanego w WPF
- 10. Zmiana koloru tła przycisku za pomocą wzoru MVVM w WPF
- 11. WPF - Tworzenie klikalnych hiperłączy
- 12. Ręczne tworzenie projektu WPF
- 13. Jakiego wzoru wzoru używa Codeigniter?
- 14. Wyszukiwanie wzoru w System.IO.Stream
- 15. Problem podczas korzystania z wzoru wzoru dekoratora
- 16. Wdrażanie wzoru dekoratora w Pythonie
- 17. Oczekiwany błąd wzoru w Swift?
- 18. Wyświetlanie wzoru Markdown w GitHub
- 19. Znaczenie wzoru ciasta w scala
- 20. Stosowanie wzoru MVVM w QtQuick
- 21. WPF: Tworzenie całego "bloku" ścieżki klikalnej
- 22. Tworzenie wideo z animacji WPF/Silverlight
- 23. Tworzenie wyskakującego okna WPF bez ekranu
- 24. Tworzenie przezroczystego otwór wewnątrz okna tła - WPF
- 25. WPF DataGrid - Tworzenie nowej niestandardowej Kolumna
- 26. Jakiego wzoru działa .gitignore?
- 27. Implementacja wzoru dekoratora
- 28. Projekt wzoru dekoratora
- 29. gsub tylko część wzoru
- 30. Wyszukiwanie powtarzającego się wzoru
Dzięki Anatolij, jak drogie to jest? Użyję tego na 100 prostokątach. – Vahid
@Vahid Utwórz szablon i używaj go w ten sposób zamiast pojedynczo dla każdej instancji. –
@Vahid: Myślę, że powinieneś przede wszystkim spróbować zrobić to na korzyść XAML, a nie za dużo czasu. Zasadniczo WPF jest zoptymalizowany do pracy z grafiką wektorową, więc możesz zamrozić 'VisualBrush' przy pomocy' PresentationOptions', tak jak poniżej: 'PresentationOptions: Freeze =" True "'. Aby uzyskać więcej informacji, zobacz ten ['link'] (http://www.codeproject.com/Articles/22716/Graphic-in-XAML-and-WPF). –