3

I have a custom hexagon menu in wpf and want to rotate it this is the rotation code

 hexagonMenu1.RenderTransform = new RotateTransform(i,hexagonMenu1.Hexagon.ContainerRect.Width / 2, hexagonMenu1.Hexagon.ContainerRect.Height / 2);

when I call this code more than one it do nothing and panel not rotated , what can i do? Thanks.

4

2 回答 2

3

您将不得不增加旋转角度,即您的参数i,每个新的 RenderTransform。

也可以重用现有的 RenderTransform 并增加其Angle属性:

hexagonMenu1.RenderTransform = new RotateTransform(0, hexagonMenu1.Hexagon.ContainerRect.Width / 2, hexagonMenu1.Hexagon.ContainerRect.Height / 2);
...
double deltaRotation = ...
// do the following for every rotation cycle
((RotateTransform)hexagonMenu1.RenderTransform).Angle += deltaRotation;

您还可以考虑为旋转角度设置动画,从而消除循环增加旋转角度的需要:

DoubleAnimation animation =
    new DoubleAnimation(360, TimeSpan.FromSeconds(10));

((RotateTransform)hexagonMenu1.RenderTransform).BeginAnimation(
    RotateTransform.AngleProperty, animation);
于 2012-08-21T07:37:39.503 回答
1

您需要意识到您编写的代码不是“旋转六边形”;它是“设置六边形的旋转”。

你认为你的代码正在做的是:“旋转 30 度。再旋转 30 度。现在我旋转了 60 度。”

实际上,您的代码正在执行此操作:“将旋转设置为 30 度。将旋转设置为 30 度。旋转设置为 30 度。”

无论您调用多少次代码,都不会导致进一步的轮换。您需要更改代码,以便设置旋转之前i的值不同。

于 2012-08-21T07:56:19.397 回答