我有一个简单的水平<Line>
元素。此行应用了一个RotateTransform,它以我选择的任何角度倾斜线。问题是在应用变换之前计算了线的渲染长度。结果是该线在旋转后不再适合其父元素。
我目前的代码与此类似,以15°为例:
<Grid Background="Orange">
<Line HorizontalAlignment="Left" VerticalAlignment="Bottom"
RenderTransformOrigin="0,0" Stretch="UniformToFill"
StrokeThickness="1" Stroke="Green" X1="0" Y1="0" X2="1" Y2="0">
<UIElement.RenderTransform>
<RotateTransform Angle="-15" />
</UIElement.RenderTransform>
</Line>
</Grid>
结果如下:
http://img179.imageshack.us/img179/2592/slantpartial.png
如图所示,由于旋转,该线不与控制器的右侧接触。我需要将线拉伸到可能的最大尺寸并完全填充其父控件,无论我将角度设置为什么。角度将在运行时动态变化,我不能在当前项目中使用斜率计算。我需要保持RotateTransform作为倾斜线的手段。
我需要完成的一个例子 - 再次,以15°为例:
http://img42.imageshack.us/img42/8276/slantcomplete.png
答案 0 :(得分:1)
使线条与父容器的左上角和右下角之间的最大距离一致。当平放时,这将使线条略长于容器,但在50%斜率时完美适合。让父母裁掉溢出。
答案 1 :(得分:1)
您可以在旋转变换前尝试缩放变换:
<UIElement.RenderTransform>
<TransformGroup>
<ScaleTransform ScaleX="2.0" />
<RotateTransform Angle="-15" />
</TransformGroup>
</UIElement.RenderTransform>
答案 2 :(得分:0)
最简单的解决方案是动态更改X和Y值,而不使用RenderTransform。为什么不能使用斜率计算?