WPF面板旋转



我在wpf中有一个自定义的六边形菜单,并希望旋转它这是旋转代码

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

当我多次调用这个代码时,它什么都不做,面板也不旋转,我能做什么?谢谢

对于每个新的RenderTransform,您必须增加旋转角度,即参数i

还可以重用现有的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);

您需要注意的是,您编写的代码不是"旋转六边形",而是"为hegaxon设置旋转"

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

事实上,你的代码是这样做的:"将旋转设置为30度。将旋转设置成30度。旋转设置成30%。"

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

最新更新