为圆中的对象设置正确的边距

时间:2017-01-07 02:41:32

标签: c# wpf button

我通过为每个节点制作按钮来制作树形可视化工具。我从名为“Start”的根节点开始。当我点击一个节点(I.E:根)时,我正试图制作动画,它会打开孩子们。

Root

点击后,我希望孩子们打开一个圆圈。现在,这是单击开始按钮后的样子:

After clicking

请注意,开始按钮没有移动。

动画代码如下所示:

===

调用此animate函数的代码是:

private void animateNode(double newX, double newY, Button toAnimate)
    {
        ThicknessAnimation slide = new ThicknessAnimation();
        slide.From = toAnimate.Margin;                                 // get current grid location
        slide.To = new Thickness(newX, newY, 0, 0);                    // set new grid location

        slide.Duration = new Duration(TimeSpan.FromSeconds(0.5));     // set translation time
        toAnimate.BeginAnimation(Button.MarginProperty, slide);          // animate movement
    }

按钮是在以下代码中手动创建的:

    count = filteredStruct.Children.Count;
    double degree = 360 / count;
    ...
                while (i < j)
                {
                    if (filteredStruct.ElementAt(i).Data[1].Equals("\\N"))
                    {
                        animateNode(butList[i].Margin.Left + (Double)(350 * Math.Cos((Math.PI / 180) * k * degree)), butList[i].Margin.Top + (Double)(350 * Math.Sin((Math.PI / 180) * k * degree)), butList[i]);
                        k++;
                    }
                    i++;
                } 

我认为它在右侧是倾斜的,因为我的锚是按钮的左上角,左侧和右上角没有正确地按比例移动。

有任何解决这些问题的建议吗?这只是节点的第一级,所以我担心我可能需要更多计算才能将位置从边距转换为按钮的实际居中位置。

0 个答案:

没有答案