我已经通过代码在我的Silverlight 5应用程序中创建了一个线对象,现在我想围绕它的中心点旋转这条线,但是行为很奇怪,所以这条线在屏幕的左上角旋转,这是我的代码:
RotateTransform rotate = new RotateTransform();
rotate.Angle = myArrowAngle[i] + off_x;
myLines[i].RenderTransformOrigin = new Point(0.5d, 0.5d);
myLines[i].RenderTransform = rotate;
出了什么问题?
我设置了我的线对象的RenderTransferOrigin,但没有运气,我应该在旋转变换之后或之前移动我的对象吗?这个轮换是怎么做的?在模型空间还是在世界空间?似乎它在世界空间中被旋转,因为我的线绕着我的画布而不是它的中心旋转(0,0)
答案 0 :(得分:2)
当你将变换原点设置为0.5,0.5时,你将它设置为相对于线条的“边界框”,它不一定与线条本身的中心重合。
请参阅以下示例:
<Canvas>
<Line X1="0" Y1="50" X2="100" Y2="50"
StrokeThickness="4" Stroke="Red" RenderTransformOrigin="0.5,0.5">
<!--<Line.RenderTransform>
<RotateTransform Angle="45" CenterX="0.5" CenterY="0.5" />
</Line.RenderTransform>-->
</Line>
</Canvas>
如果取消注释变换,它将从小圆圈在该框中的位置应用。
这可以解释你的体验吗?