WPF:没有渐变的RadialGradientBrush?

时间:2010-05-03 18:27:40

标签: wpf radial-gradients

我想在另一个圆圈中绘制一些圆圈,如下所示:

alt text http://img38.imageshack.us/img38/6379/circles.png

有没有办法告诉RadialGradientBrush不使用渐变而只是固定颜色,所以我能做到这一点?谢谢你的提示!

(我想这可以使用DrawingBrush轻松完成,我只是想知道是否也可以使用RadialGradientBrush完成)

2 个答案:

答案 0 :(得分:5)

如果您确实想要这样做,可以在所需的偏移处重复所需的颜色。

例如:

            <RadialGradientBrush>
                <GradientStop Offset="0" Color="Black" />
                <GradientStop Offset="0.25" Color="Black" />
                <GradientStop Offset="0.25" Color="Red" />
                <GradientStop Offset="0.75" Color="Red" />
                <GradientStop Offset="0.75" Color="Salmon" />
                <GradientStop Offset="1" Color="Salmon" />
            </RadialGradientBrush>

这样,它将从0到0.25填充黑色到黑色,从0.25到0.75从红色到红色,从鲑鱼到鲑鱼从0.75到1.0。

由于偏移匹配,因此Gradient没有“空间”进行混合。

答案 1 :(得分:1)

如果您尝试制作绝对大小的“靶心”,请考虑将椭圆叠加在网格中,而不是尝试使用画笔。

<Grid>
    <Grid.Resources>
        <Style TargetType="{x:Type Ellipse}">
            <Setter Property="HorizontalAlignment" Value="Stretch" />
            <Setter Property="VerticalAlignment" Value="Stretch" />
        </Style>
    </Grid.Resources>
   <Ellipse Width="100" 
            Height="100"
            Fill="Salmon" />
   <Ellipse Width="50" 
            Height="50"
            Fill="Red" />
   <Ellipse Width="25" 
            Height="25"
            Fill="Black" />
</Grid>

由于它们都在同一个网格中(默认情况下列和行都是0,但您可以设置它们),并且将水平和垂直对齐设置为拉伸,它们将简单重叠。当然,一定要把最大的那个放在第一位。