類似のスレッドがいくつかありましたが、問題の解決策が見つかりませんでした。それは私の最初の投稿です。
ここでは、ことだ:コードからのWpfアニメーション
Viewport3D viewPort3D;
GeometryModel3D geometryModel = new GeometryModel3D();
Transform3DGroup transform3DGroup = new Transform3DGroup();
...
// Rotation
RotateTransform3D rotateTransform3D = new RotateTransform3D();
AxisAngleRotation3D axisAngleRotation3d = new AxisAngleRotation3D();
axisAngleRotation3d.Axis = new Vector3D(0, 1, 0);
axisAngleRotation3d.Angle = angle;
rotateTransform3D.Rotation = axisAngleRotation3d;
transform3DGroup.Children.Add(rotateTransform3D);
// Translation
TranslateTransform3D translateTransform3D = new TranslateTransform3D();
translateTransform3D.OffsetX = offsetX;
transform3DGroup.Children.Add(translateTransform3D);
// Adding transforms
geometryModel.Transform = transform3DGroup;
Model3DGroup model3DGroup = new Model3DGroup();
model3DGroup.Children.Add(image.getGeometryModel3D());
modelVisual3D.Content = model3DGroup;
viewPort3D.Children.Add(modelVisual3D);
そして今、私は(後で私はそのストーリーボードに回転も追加したいので)ストーリーボードを使用して翻訳を作りたい:
Storyboard s = new Storyboard();
Transform3DGroup transform3DGroup = model3DGroup.Children.ElementAt(current).Transform as Transform3DGroup;
for (int j = 0; j < transform3DGroup.Children.Count; ++j)
{
if (transform3DGroup.Children.ElementAt(j) is TranslateTransform3D)
{
TranslateTransform3D translation = transform3DGroup.Children.ElementAt(j) as TranslateTransform3D;
DoubleAnimation doubleAnimation = new DoubleAnimation();
doubleAnimation.From = 0;
doubleAnimation.To = 2;
doubleAnimation.Duration = new Duration(TimeSpan.FromSeconds(1));
doubleAnimation.AutoReverse = true;
doubleAnimation.RepeatBehavior = RepeatBehavior.Forever;
s.Children.Add(doubleAnimation);
s.Duration = new Duration(TimeSpan.FromSeconds(1));
Storyboard.SetTarget(doubleAnimation, model3DGroup.Children.ElementAt(current));
Storyboard.SetTargetProperty(doubleAnimation, new PropertyPath("(Model3D.Transform).(Transform3DGroup.Children)[1].(TranslateTransform3D.OffsetX)"));
s.Begin(); // Exception during the execution.
}
}
例外を最後の行に:
'[不明]'パスのプロパティ値 '(Model3D.Transform)。(Transform3D Group.Children)[1]。(TranslateTransform3D.OffsetX) ' は、 の不変インスタンスを指します。' System.Windows.Media.Media3D.TranslateTransform3D '。
私はブレンド4
で生成されたパスへのPropertyPathは、同様の取った任意の助けてくれてありがとう。
はい!それは働いている。 s.Begin(this)を使用することだけを覚えておく必要があります。ありがとうございました。まもなくこのプロパティをバインドする方法を記述できますか? – Mat38