C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: C# でアニメーション


(過去ログ 173 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■99604 / inTopicNo.1)  C# でアニメーション
  
□投稿者/ 雲 (1回)-(2022/05/03(Tue) 06:02:30)

分類:[.NET 全般] 

図形(Ellispe)を回転させるために以下のコードをC#で書いてみましたが何故か回転してくれません。

やっていることは単純で、EllipseをXAML側で定義(_ellipse)してコードビハインドで StoryBoard に
DoubleAnimationを設定しているだけなのですが。。。

何か見落としているとは思うのですが、全く心当たりがなくて悩んでます。。。

気がつくところがありましたらご指摘いただけると助かります。


var rotate = new RotateTransform(){
  Angle   = 0,
  CenterX = _ellipse.ActualWidth  / 2,
  CenterY = _ellipse.ActualHeight / 2,
};

var animation = new DoubleAnimation(){
  To = 360.0,
  Duration = new Duration(TimeSpan.FromSeconds(3.0)),
  RepeatBehavior = RepeatBehavior.Forever,
};

Storyboard.SetTarget( animation, rotate );
Storyboard.SetTargetProperty( animation, new PropertyPath( RotateTransform.AngleProperty ));
storyBoard.Children.Add( animation );

_ellipse.RenderTransform = rotate;

storyBoard.Begin( _ellipse );


よろしくお願いします。

引用返信 編集キー/
■99606 / inTopicNo.2)  Re[1]: C# でアニメーション
□投稿者/ Hongliang (1233回)-(2022/05/03(Tue) 10:48:36)
> Storyboard.SetTarget( animation, rotate );
> Storyboard.SetTargetProperty( animation, new PropertyPath( RotateTransform.AngleProperty ));

animationのTargetは_ellipseにして、TargetPropertyを_ellipseから辿るようにします。
new PropertyPath("RenderTransform.Angle")
引用返信 編集キー/
■99607 / inTopicNo.3)  Re[2]: C# でアニメーション
□投稿者/ 雲 (2回)-(2022/05/03(Tue) 11:24:26)
No99606 (Hongliang さん) に返信

ありがとうございます。無事にアニメーションがされるようになりました。

> animationのTargetは_ellipseにして、TargetPropertyを_ellipseから辿るようにします。
> new PropertyPath("RenderTransform.Angle")

new PropertyPath("(RenderTransform).(RotateTransform.Angle)")

パスの指定の書き方が何故これでOKなのか?が謎ですが。。。

もう少し調べてみます。大変助かりました。
引用返信 編集キー/
■99609 / inTopicNo.4)  Re[3]: C# でアニメーション
□投稿者/ 雲 (3回)-(2022/05/04(Wed) 03:31:04)
> new PropertyPath("(RenderTransform).(RotateTransform.Angle)")
>
> パスの指定の書き方が何故これでOKなのか?が謎ですが。。。

添付プロパティの時のbinding の書き方ということで理解しました。


参考

https://atmarkit.itmedia.co.jp/ait/articles/1010/08/news123_2.html

抜粋

添付プロパティをバインディング・ソースにする場合には、「{Binding (Canvas.Left)}」のように、カッコでくくって「(型名.プロパティ名)」と記述する
解決済み
引用返信 編集キー/
■99613 / inTopicNo.5)  Re[4]: C# でアニメーション
□投稿者/ Hongliang (1234回)-(2022/05/04(Wed) 12:50:25)
今回の話では、別に添付プロパティではないので、私が記載した通りの記述で問題ないですがね。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -