WPF에서 스트라이프 패턴을 만들 수 있었지만 XAML에서 이와 같은 패턴을 만들려면 어떻게해야합니까? WPF에서 이와 비슷한 기본 브러시가 있습니까?WPF에서 해치 패턴 만들기
12
A
답변
22
당신은 VisualBrush
를 사용하여 XAML에 그것을 할 수 있습니다. 당신은 예를 들어, 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
, 무료이며 매우 유용합니다. ful. 자세한 내용은이 링크를 참조하십시오 더 나은 성능을 위해
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
에서 인용구 :
freezable을 더 이상 수정할 필요가 없으면 멈추고 성능이 향상됩니다. 이 예제에서 브러시를 고정하려면 그래픽 시스템이 더 이상 변경 사항을 모니터링 할 필요가 없습니다. 그래픽 시스템은 브러시가 변경되지 않는다는 것을 알고 있기 때문에 다른 최적화 작업을 수행 할 수도 있습니다.
6
여기에 또 다른 접근 방법은 부화의 다른 스타일 들어, : 아나톨리
<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>
덕분에,이 얼마나 비싼인가? 나는 100 개의 직사각형처럼 그것을 사용할 것입니다. – Vahid
@Vahid 템플릿으로 만들고 각 인스턴스에 대해 개별적으로 사용하지 않고 다시 사용하십시오. –
@Vahid : 우선 XAML의 이점으로 많은 시간을 투자해서이 작업을 수행해야한다고 생각합니다. 원칙적으로 WPF는 벡터 그래픽 작업에 최적화되어 있으므로'PresentationOptions : Freeze = "True"'와 같이'PresentationOptions'의 도움으로'VisualBrush'를 고정시킬 수 있습니다. 더 자세한 정보는이 링크를 참조하십시오 (http://www.codeproject.com/Articles/22716/Graphic-in-XAML-and-WPF). –