我遵循了有关旋转绑定到按钮的图片的教程,这应该非常简单,但我无法弄清楚。
private void rotateMenu()
{
int rotateAngle;
if (menuState) rotateAngle = -90;
else rotateAngle = 90;
DoubleAnimation myanimation = new DoubleAnimation(0, rotateAngle, new Duration(TimeSpan.FromMilliseconds(222)));
var rotateTransform = new RotateTransform(rotateAngle, 24.5, 24.5);
menuButtonImage.RenderTransform = rotateTransform;
rotateTransform.BeginAnimation(RotateTransform.AngleProperty, myanimation);
}
首先按下按钮-将图片旋转90度。简单,可行。
现在,我想反转方向或再旋转90度。
动画效果很好,但是无论我将第二个rotateAngle
设置为什么,结果总是切换回旋转90度的图片。
基本上我得到的是图片的第一部分,想要我需要的是第二部分。
我在这里做错了什么?为什么不能再次旋转图片?我尝试使用-90、90和许多其他值,例如45度,还没有旋转吗?
答案 0 :(得分:1)
那是因为图片实际上并没有旋转,而只是渲染了。在rendertransform获得新的变换之前,它将保持旋转状态。
这会将它旋转回去,所以您可以尝试:
DoubleAnimation myanimation2 =
new DoubleAnimation(0, new Duration(TimeSpan.FromMilliseconds(222)));
仅使用toValue
参数重载将其旋转回去。
我会做类似的事情
// initial angle is 0
RotateTransform _rotateTransform = new RotateTransform(0.0, 24.5, 24.5);
Duration _rotationSpeed;
private void CreateRotation()
{
_rotationSpeed = new Duration(TimeSpan.FromMilliseconds(222));
menuButtonImage.RenderTransform = _rotateTransform;
}
private void rotateToSide()
{
DoubleAnimation myanimation = new DoubleAnimation(90, _rotationSpeed);
_rotateTransform.BeginAnimation(RotateTransform.AngleProperty, myanimation);
}
private void rotateToDefault()
{
DoubleAnimation myanimation = new DoubleAnimation(0, _rotationSpeed);
_rotateTransform.BeginAnimation(RotateTransform.AngleProperty, myanimation);
}
作为参考(我可以从您的代码中读取),您不必更改Angle
对象的rotateTransform
属性。 rotateTransform.BeginAnimation
将更改属性。