【发布时间】:2010-11-29 17:51:41
【问题描述】:
所以我制作了一个仪表,它可以在顺时针或逆时针方向上显示动画。每隔一段时间,新数据就会进入我设置的两个依赖属性。当这些属性中的数据发生变化时,我想对这两个值进行一些计算,以确定仪表的指针将旋转哪个方向(以及旋转多少)。
我已经让旋转代码工作了,我编写了一个函数(全部用 C# 编写),它获取旋转的开始角度、结束角度和持续时间。旋转功能有效,我可以输入值并观察指针旋转。
当任何一个依赖属性发生变化时,我不知道该怎么做是调用这个动画函数。将我的旋转函数设为静态是不合适的,因为旋转调用最终可能是特定于实例的。
换句话说,我想要实现的是PropertyChanged->计算新位置/速度->构建故事板并运行动画。
我之所以使用依赖属性而不是标准属性是因为它们绑定到 xaml 的控件之外。
谢谢!
private void AnimatePointer(double startAngle, double endAngle, TimeSpan length, string pointerName)
{
DoubleAnimation handRotation = new DoubleAnimation();
handRotation.From = startAngle;
handRotation.To = endAngle;
handRotation.Duration = new Duration(length);
Storyboard.SetTargetName(handRotation, pointerName);
DependencyProperty[] propertyChain =
new DependencyProperty[]
{
Rectangle.RenderTransformProperty,
TransformGroup.ChildrenProperty,
RotateTransform.AngleProperty
};
string anglePath = "(0).(1)[1].(2)";
PropertyPath propPath = new PropertyPath(anglePath, propertyChain);
Storyboard.SetTargetProperty(handRotation, propPath);
Storyboard sb = new Storyboard();
sb.Children.Add(handRotation);
sb.Begin(this);
}
【问题讨论】:
标签: wpf