1

I have some rectangles which their heights are same. But i filled them with different color. Can i combine them as result i get Rectangle? I can do it with RectangleGeometry but i need Rectangle type

4

1 に答える 1

3

色をどのように組み合わせたいですか?

オーバーラップする 2 つの長方形の領域を指定したいだけですが、色が混ざり合うように透明度の異なる色を使用しますか?

それとも、Rectangle を分割して、異なる領域で異なる色を使用しますか?

Rectangle のままにしておく必要がある理由はありますか?

これを Rectangle のままにし、2 つの色を指定して Fill として結合/混合する方法は次のとおりです。

ここに画像の説明を入力

<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 で記述されたブラシをリソースに移動します....および/または Rectangles の新しいスタイルを作成します)。

Rectangle は封印されているためオーバーライドできます。これは Control ではないため、テンプレートを変更することはできません。

「独自の」長方形の強化された動作をより適切にカプセル化できるように、独自の「形状」を検討することをお勧めします。

開始するための例を次に示します。

于 2012-09-07T09:36:13.617 に答える