我正在尝试剪辑一个旋转的矩形,其方式与我可以剪辑一个缩放的矩形的方式类似。这是一些简单的代码:
<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 对象来保持由黄色矩形表示的剪辑区域。这应该不难,但我看不到。感谢您的任何建议。