使用多个SolidColorBrush填充XAML矩形

3
这种在xaml中填充矩形的方式可行吗? enter image description here 我不想使用渐变来填充矩形,我希望每个部分都使用不同的实色画刷。
谢谢。

你可以将指定颜色的3个矩形并排放置。 - Hamlet Hakobyan
我之前也考虑过这个问题,但我的一些矩形有1、2、3或4个部分,而颜色将在viedmodel中绑定,创建N个矩形可能很难实现这个任务。 - Lu1zZz
2个回答

5

试试这个:

<Rectangle Width="300" Height="100" Stroke="black" StrokeThickness="3">
  <Rectangle.Fill>
    <LinearGradientBrush StartPoint="0 0" EndPoint="1 0">
      <GradientStop Color="red" Offset="0"/>
      <GradientStop Color="red" Offset=".33"/>
      <GradientStop Color="black" Offset=".33"/>
      <GradientStop Color="black" Offset=".34"/>
      <GradientStop Color="green" Offset=".34"/>
      <GradientStop Color="green" Offset=".66"/>
      <GradientStop Color="black" Offset=".66"/>
      <GradientStop Color="black" Offset=".67"/>
      <GradientStop Color="cyan" Offset=".67"/>
    </LinearGradientBrush>
  </Rectangle.Fill>
</Rectangle>

1

关于您的评论 - 是否仅仅担心它是N个矩形?如果不是必须全部为一个矩形的限制,您可以尝试像这样做:

    <ListView ItemsSource="{Binding ColorsTiles}">
        <ListView.ItemTemplate>
            <DataTemplate>
                <ListView ItemsSource="{Binding}">
                    <ListView.ItemsPanel>
                        <ItemsPanelTemplate>
                            <StackPanel Orientation="Horizontal" />
                        </ItemsPanelTemplate>
                    </ListView.ItemsPanel>
                    <ListView.ItemTemplate>
                        <DataTemplate>
                            <Rectangle Fill="{Binding}" Width="100" Height="100" />
                        </DataTemplate>
                    </ListView.ItemTemplate>
                </ListView>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>

并且

ColorsTiles = new ObservableCollection<ObservableCollection<SolidColorBrush>>() {
        new ObservableCollection<SolidColorBrush>(){ new SolidColorBrush(Colors.LightGreen), new SolidColorBrush(Colors.LightBlue), new SolidColorBrush(Colors.Blue) },
        new ObservableCollection<SolidColorBrush>(){ new SolidColorBrush(Colors.LightSeaGreen), new SolidColorBrush(Colors.Pink), new SolidColorBrush(Colors.Red) } };

这是一个很好的想法来实现这个,它们之间的矩形空间可以为零吗? - Lu1zZz
您可以通过更新DataTemplate或必要时更新ItemsPanelTemplate来实现此目标。 - bdimag

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接