C#在WinForms中,围绕中心点以默认角度旋转2个控件
我试图旋转2个windows窗体按钮,如下图所示: 旋转期间,它们之间的距离应为0,单击标签时,它们应“旋转”90度,如下所示:C#在WinForms中,围绕中心点以默认角度旋转2个控件,c#,winforms,rotation,controls,point,C#,Winforms,Rotation,Controls,Point,我试图旋转2个windows窗体按钮,如下图所示: 旋转期间,它们之间的距离应为0,单击标签时,它们应“旋转”90度,如下所示: if (red is up and black is down) { red will be down and black will be up; } else { red will be up and black will be down; } 我使用此方法返回所需的点“位置”,但无法获得所需的旋转“效果”: 就像我在评论中说的那样: priv
if (red is up and black is down)
{
red will be down and black will be up;
}
else
{
red will be up and black will be down;
}
我使用此方法返回所需的点“位置”,但无法获得所需的旋转“效果”:
就像我在评论中说的那样:
private Point calculateCircumferencePoint(double radoffset, Point center, double radius)
{
Point res = new Point();
double x = center.X + radius * Math.Cos(radoffset);
double y = center.Y + radius * Math.Sin(radoffset);
res.X = (int)x;
res.Y = (int)y;
return res;
}
这里还有一个测试应用程序:
编辑:对于第二个按钮,您只需将初始偏移设置为Math.PI
EDIT2:要旋转按钮使其交叉(如8的路径),需要将半径设置为
Sin(radoffset)
或Cos(radoffset)
我忘了提到,旋转点将在计时器中设置,以产生旋转效果。你需要一个计时器,为圆的参数方程设置RAD偏移量。我不太懂真光测量,举个例子就好了。对于按钮之间没有距离,旋转它们就像旋转它们的位置一样,我需要确定偏移量或半径?这取决于您想要实现的目标,但我假设您是对的。要自动化距离,您可以将半径设置为(radoffset%Math.PI)*constvalue
,如果我在计算周长之前在计时器中设置半径,按钮将减速并从一个位置跳到另一个位置。您必须对这些值进行一些试验,以获得完美的结果;)
private Point calculateCircumferencePoint(double radoffset, Point center, double radius)
{
Point res = new Point();
double x = center.X + radius * Math.Cos(radoffset);
double y = center.Y + radius * Math.Sin(radoffset);
res.X = (int)x;
res.Y = (int)y;
return res;
}