如何使目标剪裁几何尺度?

Ale*_*exK 5 wpf geometry clip

在以下示例中,每当更改网格大小时,剪切区域大小保持不变,因为它以绝对坐标表示.

<Grid Clip="M10,10 L10,150 L150,150 L150,10 Z">
    <Rectangle Fill="Red"/>
</Grid>
Run Code Online (Sandbox Code Playgroud)

有可能以某种方式剪切区域,使裁剪几何与剪切对象一起缩放吗?

不接受代码隐藏解决方案,因为这将在控件模板中使用.此外,为清楚起见,示例中的区域是简单的形状.实际使用的区域是复杂且不对称的形状.

编辑:

看起来我必须更加具体.这是剪切,它是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>
Run Code Online (Sandbox Code Playgroud)

更新:Rick提供了很好的建议,虽然我需要时间来了解如何使用它.这是最终的代码.

<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>
Run Code Online (Sandbox Code Playgroud)

Ric*_*key 4

放入Grida 的内部Viewbox并更改 的大小Viewbox而不是Grid

<Viewbox>
    <Grid Clip="M10,10 L10,150 L150,150 L150,10 Z" Width="200" Height="200">
        <Rectangle Fill="Red"/>
    </Grid>
</Viewbox>
Run Code Online (Sandbox Code Playgroud)