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

How do I draw two-colored diagonal background?

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

我的 DataGrid 中有两类按颜色区分的行。很少有行同时具有这两个类别,所以我想像上面那样设置它们的背景。

您可以使用一对拉伸路径对象来创建 "background",然后在上面覆盖您想要的任何其他内容。无论网格大小如何,两个彩色区域之间的边界将固定在对角线上。

<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>

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

如附图所示,调整大小不是问题。