如何绘制双色对角线背景?

问题描述:

如何绘制两色对角线背景? 我希望颜色由容器的对角线分隔。 我想在对容器进行大小调整后保留对角线。如何绘制双色对角线背景?

我在我的DataGrid中有两种类别的行按照颜色进行了清理。几行都有这两个类别,所以我想像上面那样设置他们的背景。

+0

我试过LinearGradientBrush,但它不能被设置为对角线。 –

+1

@WaldemarGałęzinowski'LinearGradientBrush'可以设置为对角线...参见[here](http://www.java2s.com/Tutorial/VB/0290__Windows-Presentation-Foundation/LinearGradientBrushExamples.htm)。 – Rachel

这可以通过使用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> 

调整大小不是问题,因为您可以在附加的图片中看到。 enter image description here

您可以使用一对拉伸的路径对象来创建“背景”,然后在顶部覆盖任何你想要的东西。无论网格的大小如何,两个着色区域之间的边界将保持固定在对角线上。

<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