在以下示例中,每當網格大小發生更改時,剪切區域大小保持不變,因爲它以絕對座標表示。如何使目標的裁剪幾何比例縮放?
<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>
UPDATE: 裏克提供了很好的建議,但它需要時間對我來說,瞭解如何使用它。 這是最終的代碼。
<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>
這確實乞討的問題:最初的規模是什麼?網格可以基於屏幕等開始爲任何大小,但幾何體具有固定大小。初始規模需要建立。那時,我會編寫一個從網格繼承的自定義面板,添加一個dep。支柱。用於初始縮放,並掛接電話進行排列;沒有「後面的代碼」,而是一個自定義控件。 – 2011-05-10 21:32:32
是的,我現在意識到,關於規模。用Stretch = Rectangle替換網格填充試圖獲得與Path Stretch = Fill相同的效果。雖然沒有幫助。我正在尋找的解決方案是在控制模板中使用,而不是如何編寫自定義控件。 – AlexK 2011-05-10 23:01:01