Создать VisualBrush по коду
У меня есть этот пример как XAML:
<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 vb = new VisualBrush();
vb.Viewport = new Rect(0, 0, 5, 5);
vb.TileMode = TileMode.Tile;
Честно говоря, я не знаю, как написать путь данных. Как я могу это сделать?
1 ответ
Вы могли бы написать
vb.Visual = new Path
{
Data = Geometry.Parse("M 0 5 L 5 0 M -2 2 L 2 -2 M 3 7 L 7 3"),
Stroke = new SolidColorBrush(Color.FromArgb(0x80, 0xff, 0xff, 0xff))
};
Однако вам вообще не нужно использовать VisualBrush.
Ниже в XAML показано, как использовать DrawingBrush с двумя рисунками, чтобы получить рисунок штриховки поверх сплошного цветного фона.
<DrawingBrush x:Key="HatchBrush" TileMode="Tile"
Viewport="0,0,5,5" ViewportUnits="Absolute"
Viewbox="0,0,5,5" ViewboxUnits="Absolute">
<DrawingBrush.Drawing>
<DrawingGroup>
<GeometryDrawing Brush="DarkCyan">
<GeometryDrawing.Geometry>
<RectangleGeometry Rect="0,0,5,5"/>
</GeometryDrawing.Geometry>
</GeometryDrawing>
<GeometryDrawing Geometry="M0,5 L5,0 M-2,2 L2,-2 M3,7 L7,3">
<GeometryDrawing.Pen>
<Pen Brush="#80ffffff" Thickness="1"/>
</GeometryDrawing.Pen>
</GeometryDrawing>
</DrawingGroup>
</DrawingBrush.Drawing>
</DrawingBrush>