Как изменить масштаб геометрии отсечения с целью?

В следующем примере всякий раз, когда размер сетки изменяется, размер области отсечения остается таким, как он выражен в абсолютных координатах.

<Grid Clip="M10,10 L10,150 L150,150 L150,10 Z">
    <Rectangle Fill="Red"/>
</Grid>

Можно ли каким-то образом обрезать область таким образом, чтобы геометрия отсечения масштабировалась вместе с отсеченным объектом?

Решения кода позади не принимаются, потому что это должно использоваться в шаблоне управления. Кроме того, для наглядности область в примере имеет простую форму. Фактически используемый регион имеет сложную и асимметричную форму.

РЕДАКТИРОВАТЬ:

Похоже, я должен быть более конкретным. Это фрагмент, который является частью шаблона настраиваемого элемента управления для ProgressBar. При масштабировании внешней сетки прямоугольник PART_Indicator не масштабирует область отсечения. Правильная композиция - размер сетки 200x200.

<Grid>
    <Path Name="PART_Track" 
          Data="M100,0 A100,100 0 1 0 100,200 A100,100 0 1 0 100,0 Z"
          Fill="AliceBlue" Stretch="Fill"/>

    <Rectangle Clip="M100,0 A100,100 0 1 0 100,200 A100,100 0 1 0 100,0 Z"
               Stretch="Fill"
               Name="PART_Indicator" Fill="Red" 
               Height="100" VerticalAlignment="Top"/>

    <Path Name="Border" Data="M100,0 A100,100 0 1 0 100,200 A100,100 0 1 0 100,0 Z"
          Stretch="Fill" StrokeThickness="3" Stroke="Black"/>
</Grid>

ОБНОВЛЕНИЕ: Рик дал отличное предложение, хотя мне потребовалось время, чтобы понять, как его использовать. Вот окончательный код.

<Viewbox StretchDirection="Both" Stretch="Fill" >
    <Grid>
        <Path Name="PART_Track" 
              Data="M100,0 A100,100 0 1 0 100,200 A100,100 0 1 0 100,0 Z"
              Fill="AliceBlue" Stretch="Fill"/>

        <Border Clip="M100,0 A100,100 0 1 0 100,200 A100,100 0 1 0 100,0 Z"
                Height="200" VerticalAlignment="Bottom">
            <Rectangle Name="PART_Indicator" Fill="Red" VerticalAlignment="Bottom" 
                       Height="40"/>
        </Border>

        <Path Name="Border"
              Data="M100,0 A100,100 0 1 0 100,200 A100,100 0 1 0 100,0 Z"
              StrokeThickness="3"
              Stretch="Fill" Stroke="Black"/>
    </Grid>
</Viewbox>
5
задан AlexK 1 June 2011 в 06:09
поделиться