2
我想剪裁一個旋轉的矩形,與我可以剪裁縮放的矩形的方式類似。下面是一些簡單的代碼:在Silverlight XAML中剪切旋轉的矩形
<Canvas>
<!--first example: clipping (transparent yellow) correctly clips scaled rectangle -->
<Rectangle Fill="Red" Width="200" Height="200" Canvas.Left="20" Canvas.Top="20">
<Rectangle.Clip>
<RectangleGeometry Rect="0, 0, 200, 100">
<RectangleGeometry.Transform>
<ScaleTransform ScaleX="0.5" ScaleY="0.5"/>
</RectangleGeometry.Transform>
</RectangleGeometry>
</Rectangle.Clip>
<Rectangle.RenderTransform>
<ScaleTransform ScaleX="2" ScaleY="2"/>
</Rectangle.RenderTransform>
</Rectangle>
<Rectangle Width="200" Height="100" Canvas.Left="20" Canvas.Top="20">
<Rectangle.Fill>
<SolidColorBrush Color="Yellow" Opacity="0.5"/>
</Rectangle.Fill>
</Rectangle>
<!--second example: clipping (transparent yellow) incorrectly clips rotated rectangle -->
<Rectangle Fill="Red" Width="200" Height="200" Canvas.Left="20" Canvas.Top="250">
<Rectangle.Clip>
<RectangleGeometry Rect="0, 0, 200, 100">
<RectangleGeometry.Transform>
<RotateTransform CenterX="100" CenterY="100" Angle="0"/>
</RectangleGeometry.Transform>
</RectangleGeometry>
</Rectangle.Clip>
<Rectangle.RenderTransform>
<RotateTransform CenterX="100" CenterY="100" Angle="45"/>
</Rectangle.RenderTransform>
</Rectangle>
<Rectangle Width="200" Height="100" Canvas.Left="20" Canvas.Top="250">
<Rectangle.Fill>
<SolidColorBrush Color="Yellow" Opacity="0.5"/>
</Rectangle.Fill>
<Rectangle.RenderTransform>
<RotateTransform CenterX="100" CenterY="100" Angle="0"/>
</Rectangle.RenderTransform>
</Rectangle>
</Canvas>
在我可以通過縮放(縮小)的剪切區域裁剪經縮放(擴大)的矩形的第一個例子。在第二個例子中,我想做類似的事情 - 通過某種方式操縱紅色矩形剪輯的Transform對象來保持由黃色矩形表示的裁剪區域。這應該不難,但我看不到它。感謝您的任何建議。
我是唯一一個有點困惑,這裏有什麼問?你試圖完成的最終效果是什麼? –
我想剪裁一個旋轉的矩形,以類似於我可以剪裁縮放矩形的方式。 –