2012年12月24日月曜日

ゆっくりMovieMaker3 開発日記 - 41

前回からの作業内容
キャラ素材関連のUI作成(未完)
タイムライン編集用コントロールで極端に重かった処理を改善

キャラ素材関連のUI、こんな感じになります。
下部タイムラインでキャラ素材の表示位置を指定でき、任意のタイミングで表示/非表示や表示位置変更を行えるようにする予定。

はまった点1「StrokeDashArrayを0に設定してはいけない」
0に設定してもエラーは出ないし挙動自体は問題ない(破線が表示されなくなる)のだが、滅茶苦茶重くなる。
複数個のアイテムを表示させると顕著で、ウィンドウのリサイズやScrollViewerのスクロールが極端に遅くなる(カクつく)。
今回は破線を非表示にしたかっただけなので、Opacity側を弄ることで対処。
これ、内部的には長さ0の破線を大漁に描画していることになっているのだろうか。少し考えてみたら重くなるのは当たり前だ。


はまった点2「ネストしたDataTemplate中のEventが正常に動作しない」
単体のDataTemplateでは正常に動作するのに、DataTemplate中のアイテムのDataTemplateにするとぬるぽる。
ググってみたら.net側のバグ?らしい。

Wpf setting events in nested list throws null reference exception
http://stackoverflow.com/questions/7925079/wpf-setting-events-in-nested-list-throws-null-reference-exception
こういうことらしい。

今回はEventSetter+StaticResourceで解決。

0 件のコメント:

コメントを投稿