如何反转或重复RotateTransform?
How to reverse or repeat RotateTransform?
我按照一个关于旋转绑定到按钮的图片的教程,它应该很简单,但我无法弄清楚。
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 度。
动画效果很好,但结果总是切换回旋转 90 度的图片,无论我将第二个 rotateAngle
设置为什么。
基本上我得到的是图片的第一部分,想要我需要的是第二部分。
我在这里做错了什么?为什么我不能再次旋转图片?我尝试使用 -90、90 和许多其他值,例如45 度,但没有发生旋转?
那是因为图片实际上并没有旋转,而只是呈现旋转了。在 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);
}
供您参考(我可以从您的代码中读到)您不必更改 rotateTransform
对象的 Angle
属性。 rotateTransform.BeginAnimation
将改变 属性.
我按照一个关于旋转绑定到按钮的图片的教程,它应该很简单,但我无法弄清楚。
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 度。
动画效果很好,但结果总是切换回旋转 90 度的图片,无论我将第二个 rotateAngle
设置为什么。
基本上我得到的是图片的第一部分,想要我需要的是第二部分。
我在这里做错了什么?为什么我不能再次旋转图片?我尝试使用 -90、90 和许多其他值,例如45 度,但没有发生旋转?
那是因为图片实际上并没有旋转,而只是呈现旋转了。在 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);
}
供您参考(我可以从您的代码中读到)您不必更改 rotateTransform
对象的 Angle
属性。 rotateTransform.BeginAnimation
将改变 属性.