旋转两条半径的parrarel线 - 保持两者之间的距离

时间:2016-04-08 12:56:15

标签: c# wpf

是否可以旋转两条parrarel线,它们之间的距离为半径?

为了更好地想象,假设这两条线是从圆心到特定距离的矩形中可见的两条线,这两条线位于矩形的两侧(底部是中心的一侧) ,top是圆圈外面的一侧),因此通过在圆形边缘上移动矩形来完成旋转,从圆心中保持距离。

如果圆圈的中心有线条,那么数学就很简单了。但是这两条线都靠近圆心,但是从中心到左右两边都有一点距离。

我的方法是尝试计算这两条线中间的线,因此正在通过圆心。但是,如果我坚持计算,这两条线应如何根据计算出的“帮助”线移动。

[已编辑:已添加图片]

Top is origin position, right is desired (or any other angle)

1 个答案:

答案 0 :(得分:1)

你还没有告诉你如何实际绘制形状,但下面的XAML之类的东西应该做你想要的。这两条线在一个普通的Canvas父级中绘制,该父级由RotateTransform旋转,该旋转的中心位于圆的中心。

<Canvas>
    <Path Stroke="Black">
        <Path.Data>
            <EllipseGeometry Center="200,200" RadiusX="100" RadiusY="100"/>
        </Path.Data>
    </Path>
    <Canvas>
        <Line X1="190" Y1="50" X2="190" Y2="150" Stroke="Black"/>
        <Line X1="210" Y1="50" X2="210" Y2="150" Stroke="Black"/>
        <Canvas.RenderTransform>
            <RotateTransform CenterX="200" CenterY="200"/>
        </Canvas.RenderTransform>
        <Canvas.Triggers>
            <EventTrigger RoutedEvent="Loaded">
                <BeginStoryboard>
                    <Storyboard>
                        <DoubleAnimation
                            Storyboard.TargetProperty="RenderTransform.Angle"
                            To="360" Duration="0:0:2" RepeatBehavior="Forever"/>
                    </Storyboard>
                </BeginStoryboard>
            </EventTrigger>
        </Canvas.Triggers>
    </Canvas>
</Canvas>