有没有机会将矩形组合成一个矩形?

时间:2012-09-07 07:34:45

标签: wpf rectangles

我有一些高度相同的矩形。但我用不同的颜色填充它们。我能将Rectangle结合起来吗?我可以使用RectangleGeometry来完成,但我需要Rectangle类型

1 个答案:

答案 0 :(得分:3)

您想如何组合颜色?

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

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

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

这是一种将它保持为矩形的方法,但指定你的两种颜色来组合/混合作为填充:

enter image description here

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

或者这个用于细分矩形:

enter image description here

<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描述的画笔移动到参考资料中....和/或创建一个新的矩形样式。)

矩形是密封的,因此可以被覆盖,并且它不是控件,因此您无法更改模板。

你可能想考虑做自己的“形状”,这样你就可以更好地封装“你的”矩形的增强行为。

这是一个让你开始的例子。