1

我有一些高度相同的矩形。但我用不同的颜色填充它们。我可以将它们组合起来作为我得到的结果Rectangle吗?我可以做到,RectangleGeometry但我需要Rectangle输入

4

1 回答 1

3

你想如何组合颜色?

您是否只想指定 2 个重叠但使用具有一定透明度的不同颜色的矩形区域,以便颜色混合在一起?

或者您是否希望 Rectangle 细分并在不同区域使用不同的颜色?

是否有理由需要将其保留为矩形?

这是一种将其保留为矩形但指定您的 2 种颜色以组合/混合作为填充的方法:

在此处输入图像描述

<Page
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  <Grid>  
  <Rectangle Width="100" Height="100">
  <Rectangle.Fill>
  <DrawingBrush Viewport="0,0,1,1" TileMode="Tile">
      <DrawingBrush.Drawing>
          <DrawingGroup>
              <GeometryDrawing>
                  <GeometryDrawing.Geometry>
                      <RectangleGeometry Rect="0,0,1,1" />
                  </GeometryDrawing.Geometry>
                  <GeometryDrawing.Brush>
                      <SolidColorBrush Color="Red" Opacity="1"/>
                  </GeometryDrawing.Brush>
              </GeometryDrawing>
              <GeometryDrawing>
                  <GeometryDrawing.Geometry>
                      <RectangleGeometry Rect="0,0,1,1" />
                  </GeometryDrawing.Geometry>
                  <GeometryDrawing.Brush>
                      <SolidColorBrush Color="White" Opacity=".5"/>
                  </GeometryDrawing.Brush>
              </GeometryDrawing>
          </DrawingGroup>
      </DrawingBrush.Drawing>
  </DrawingBrush>
  </Rectangle.Fill>
  </Rectangle>
  </Grid>
</Page>

或者这个用于细分矩形:

在此处输入图像描述

<Page
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  <Grid>  
  <Rectangle Width="100" Height="100">
  <Rectangle.Fill>
  <DrawingBrush Viewport="0,0,1,1" TileMode="None">
      <DrawingBrush.Drawing>
          <DrawingGroup>
              <GeometryDrawing>
                  <GeometryDrawing.Geometry>
                      <RectangleGeometry Rect="0,0,1,1" />
                  </GeometryDrawing.Geometry>
                  <GeometryDrawing.Brush>
                      <SolidColorBrush Color="Yellow"/>
                  </GeometryDrawing.Brush>
              </GeometryDrawing>
              <GeometryDrawing>
                  <GeometryDrawing.Geometry>
                      <RectangleGeometry Rect="0,0,0.5,0.5" />
                  </GeometryDrawing.Geometry>
                  <GeometryDrawing.Brush>
                      <SolidColorBrush Color="Red"/>
                  </GeometryDrawing.Brush>
              </GeometryDrawing>
              <GeometryDrawing>
                  <GeometryDrawing.Geometry>
                      <RectangleGeometry Rect="0.5,0.5,0.5,0.5" />
                  </GeometryDrawing.Geometry>
                  <GeometryDrawing.Brush>
                      <SolidColorBrush Color="Green"/>
                  </GeometryDrawing.Brush>
              </GeometryDrawing>
              <GeometryDrawing>
                  <GeometryDrawing.Geometry>
                      <RectangleGeometry Rect="0.25,0.25,0.25,0.25" />
                  </GeometryDrawing.Geometry>
                  <GeometryDrawing.Brush>
                      <SolidColorBrush Color="Blue"/>
                  </GeometryDrawing.Brush>
              </GeometryDrawing>
          </DrawingGroup>
      </DrawingBrush.Drawing>
  </DrawingBrush>
  </Rectangle.Fill>
  </Rectangle>
  </Grid>
</Page>

(如果您打算在多个地方使用 DrawingBrush 描述的画笔,请将其移动到资源中......和/或为矩形创建新样式)。

矩形是密封的,所以它可以被覆盖,它不是一个控件,所以你不能改变一个模板。

您可能需要考虑制作自己的“形状”,以便更好地封装“您的”矩形的增强行为。

这是一个让您入门的示例。

于 2012-09-07T09:36:13.617 回答