如何绘制双色对角线背景?
问题描述:
如何绘制两色对角线背景? 我希望颜色由容器的对角线分隔。 我想在对容器进行大小调整后保留对角线。如何绘制双色对角线背景?
我在我的DataGrid中有两种类别的行按照颜色进行了清理。几行都有这两个类别,所以我想像上面那样设置他们的背景。
答
这可以通过使用DrawingBrush
来实现。这里是一个Canvas
的背景示例,但它可以用于任何背景。
<Canvas Margin="182,229,197,43">
<Canvas.Background>
<DrawingBrush>
<DrawingBrush.Drawing>
<DrawingGroup>
<DrawingGroup.Children>
<GeometryDrawing Brush="Aquamarine" Geometry="M 1,1 L 0,1 0,0 1,1"/>
<GeometryDrawing Brush="Blue" Geometry="M 0,0 L 1,1 1,0 0,0"/>
</DrawingGroup.Children>
</DrawingGroup>
</DrawingBrush.Drawing>
</DrawingBrush>
</Canvas.Background>
</Canvas>
答
您可以使用一对拉伸的路径对象来创建“背景”,然后在顶部覆盖任何你想要的东西。无论网格的大小如何,两个着色区域之间的边界将保持固定在对角线上。
<Grid>
<Path Stretch="Fill" Data="M 0,0 L 0,1 L 1,0 L 0,0" Fill="Blue" />
<Path Stretch="Fill" Data="M 1,1 L 0,1 L 1,0 L 1,1" Fill="Red" />
<TextBlock Text="Some Text" FontSize="72" VerticalAlignment="Center" HorizontalAlignment="Center" Canvas.ZIndex="1" />
</Grid>
+0
删除了我的回答,因为我错过了关于调整问题的部分。 +1 –
+0
@ChrisW。你的回答看起来很好,我认为你只需要将刷子应用到动态调整大小而不是静态大小的矩形:) – Rachel
我试过LinearGradientBrush,但它不能被设置为对角线。 –
@WaldemarGałęzinowski'LinearGradientBrush'可以设置为对角线...参见[here](http://www.java2s.com/Tutorial/VB/0290__Windows-Presentation-Foundation/LinearGradientBrushExamples.htm)。 – Rachel