3

我正在用 XAML 编写画笔,我可以用它来绘制 a 的背景Grid以创建横幅。它看起来像这样:

应用于网格背景的画笔示例

我希望画笔Grid在调整大小时“拉伸” Window,但我不希望中心角变形。

变形的背景画笔

我只需要能够在Grid. 如何避免变形?

我编写的代码如下所示:

<Window x:Class="WpfApplication.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Height="60" Width="300">
    <Window.Resources>
        <DrawingBrush x:Key="GridBackground">
            <DrawingBrush.Drawing>
                <DrawingGroup>
                    <DrawingGroup.Children>
                        <GeometryDrawing Geometry="M0,1 0,0 0.4,0 0.45,0.5 0.4,1Z" Brush="#FF6A00" />
                        <GeometryDrawing Geometry="M0.6,1 0.55,0.5 0.6,0 1,0 1,1Z" Brush="#FF0000" />
                    </DrawingGroup.Children>
                </DrawingGroup>
            </DrawingBrush.Drawing>
        </DrawingBrush>
    </Window.Resources>
    <Grid Background="{StaticResource GridBackground}">
        <TextBlock Foreground="White" VerticalAlignment="Center">Some text</TextBlock>
    </Grid>
</Window>
4

1 回答 1

0

我会做两把刷子,一把固定在右边,一把固定在左边。像这样的东西:

<Grid>
     <GeometryXXX Geometry="M0,1 0,0 0.4,0 0.45,0.5 0.4,1Z" Width="300" HorizontalAlignment="Left" Brush="#FF6A00">
     <GeometryXXX Geometry="M0,1 0,0 0.4,0 0.45,0.5 0.4,1Z" Width="300" HorizontalAlignment="Right" Brush="#FF0000">
     <TextBlock Foreground="White" VerticalAlignment="Center">Some text</TextBlock>
</Grid>

我没有打开我的编译器,我不记得几何图形对象的名称。

另一种方法是创建一个 valueconverter,并执行以下操作:

...
    <GeometryDrawing Geometry="{Binding Width, ValueConverter=LeftAngledThing}" Brush="#FF6A00" />
    <GeometryDrawing Geometry="{Binding Width, ValueConverter=LeftAngledThing}" Brush="#FF0000" />
...

不过,您需要查找如何执行此操作的确切语法,因为我现在不记得了。

于 2009-06-23T02:08:31.207 回答