如何在WPF中创建重复的对角线作为背景?
好吧,我绞尽脑汁,谷歌和stackoverflow都想弄明白这一点,但就是弄不明白。我正在尝试使用DrawingBrush和DrawingGroup在我的WPF应用程序(最新版本)的后台做两件事。第一,我想用一个RadialGradientBrush在我的背景中加入一个细微的渐变。这部分工作得很好。我试图完成的第二个部分是,我想把重复的对角线作为背景的一部分。我知道我可以用图像来做,但我更愿意使用几何图形,因为我正在努力学习和掌握WPF。这是我到目前为止所拥有的。径向线看起来很好,但直线不好。任何帮助都将不胜感激如何在WPF中创建重复的对角线作为背景?,wpf,Wpf,好吧,我绞尽脑汁,谷歌和stackoverflow都想弄明白这一点,但就是弄不明白。我正在尝试使用DrawingBrush和DrawingGroup在我的WPF应用程序(最新版本)的后台做两件事。第一,我想用一个RadialGradientBrush在我的背景中加入一个细微的渐变。这部分工作得很好。我试图完成的第二个部分是,我想把重复的对角线作为背景的一部分。我知道我可以用图像来做,但我更愿意使用几何图形,因为我正在努力学习和掌握WPF。这是我到目前为止所拥有的。径向线看起来很好,但直线不好。任
<Style x:Key="WindowBackground" TargetType="Grid">
<Setter Property="Background">
<Setter.Value>
<DrawingBrush>
<DrawingBrush.Drawing>
<DrawingGroup>
<GeometryDrawing>
<GeometryDrawing.Brush>
<RadialGradientBrush GradientOrigin="0.5,0.5" RadiusX="0.5" RadiusY="0.5">
<GradientStop Color="#EE9D40" Offset="0"/>
<GradientStop Color="#BF8230" Offset="1"/>
</RadialGradientBrush>
</GeometryDrawing.Brush>
<GeometryDrawing.Geometry>
<RectangleGeometry Rect="0,0,1,1"/>
</GeometryDrawing.Geometry>
</GeometryDrawing>
<GeometryDrawing>
<GeometryDrawing.Brush>
<DrawingBrush TileMode="Tile" Stretch="None" Viewbox="0,0,1,1" Viewport="0,0,25,25" ViewportUnits="Absolute">
<DrawingBrush.RelativeTransform>
<TranslateTransform X="0" Y="0" />
</DrawingBrush.RelativeTransform>
<DrawingBrush.Drawing>
<GeometryDrawing Brush="#20FFFFFF" Geometry="M10,0 22,0 12,25 0,22 Z" />
</DrawingBrush.Drawing>
</DrawingBrush>
</GeometryDrawing.Brush>
<GeometryDrawing.Geometry>
<RectangleGeometry Rect="0,0,1,1"/>
</GeometryDrawing.Geometry>
</GeometryDrawing>
</DrawingGroup>
</DrawingBrush.Drawing>
</DrawingBrush>
</Setter.Value>
</Setter>
</Style>
这个技巧应该有效
<LinearGradientBrush EndPoint="0,0" StartPoint="8,8"
MappingMode="Absolute" SpreadMethod="Repeat">
<GradientStop Color="Black" Offset="0" />
<GradientStop Color="Black" Offset="0.1" />
<GradientStop Color="White" Offset="0.1" />
<GradientStop Color="White" Offset="1" />
</LinearGradientBrush>
我终于让它工作了,但不是像我想要的那样使用一个复合笔刷。我使用了以下样式:
<Style x:Key="WindowBackground" TargetType="Grid">
<Setter Property="Background">
<Setter.Value>
<RadialGradientBrush GradientOrigin="0.5,0.5" RadiusX="0.5" RadiusY="0.5">
<GradientStop Color="#EAA659" Offset="0"/>
<GradientStop Color="#BF8230" Offset="1"/>
</RadialGradientBrush>
</Setter.Value>
</Setter>
</Style>
<Style x:Key="HatchOverlay" TargetType="Rectangle">
<Setter Property="Fill">
<Setter.Value>
<VisualBrush Opacity=".1" TileMode="Tile" Viewport="0,0,10,20" ViewportUnits="Absolute">
<VisualBrush.Visual>
<Canvas>
<Path Stroke="#825821" Data="M 0 0 l 10 20" />
</Canvas>
</VisualBrush.Visual>
</VisualBrush>
</Setter.Value>
</Setter>
</Style>
然后,为了在运行时启用它,我添加了一个矩形作为网格的第一个子元素,如下所示:
<Grid Style="{StaticResource WindowBackground}">
<Rectangle Style="{StaticResource HatchOverlay}"/>...
...
这给了我想要的效果。谢谢你的帮助;我会投票给你们每个人。- 尝试旋转水平线笔刷以避免角隙:
<VisualBrush TileMode="Tile" Viewport="0,0,5,5" ViewportUnits="Absolute" Viewbox="0,0,5,5" ViewboxUnits="Absolute"> <VisualBrush.Visual> <Grid Background="White" Height="5"> <Path Stroke="Black" Data="M 0 3 l 8 0" /> </Grid> </VisualBrush.Visual> <VisualBrush.RelativeTransform> <RotateTransform CenterX="0.5" CenterY="0.5" Angle="45" /> </VisualBrush.RelativeTransform> </VisualBrush>