2011-07-25 7 views
0

40から180までの範囲のIQテスト結果があり、そのスケールは下から50ピクセル、上から50ピクセルの画面に表示されます。Silverlightの画面座標に対するIQテスト

Silverlightでは、テキストボックスの最初のキーフレームを配置します。下から50ピクセル移動し、プログラムでアニメーション化したい場所にプログラムで終了キーフレームを設定します。

私は、画面上を移動するオブジェクトをどこに指示するかについては、スケーリングの公式がかなりわかりません。

イージングに基づいて位置を追うように値を設定するために、y位置を使用してテキストボックス内にIQ値を配置する式を逆にしたいと思います。

 marginBottom = ResultText.Margin.Bottom; // the start position of the textBlock 
     marginTop = EndPosition.To.Value; // the position i want it animating to 

     EndPosition.To = ((iq/(180-40))*(marginTop-marginBottom)); // where to move it relating to iq 

     AnimateUp.Begin(); // This is the storyboard 

、その後CompositionTarget_Renderingハンドラで、私はアニメーションされるTextBlock内のIQ値を表示する式を逆転していますよ。

+1

最大180?それだけでは十分ではありません、例えば、Jon Skeet! –

+0

の範囲は0〜200ですが、IQでは特にそうではありませんが、40〜180は上から下に50px、50pxと同じにする必要があります。 –

+0

@Joseph Le Brech:あなたのXamlまたはスクリーンショットのサンプルを提供することができますか、実行するアニメーションのより明確な例を提供できますか? –

答えて

0

marginBottomであるべきIQ 40を仮定し、marginTop

で式が

EndPosition.To = ((marginTop - marginBottom)*iq + 180*marginBottom - 40*marginTop)/140; 

伝えるためにそのハードの完全なコードを持っていないだろうIQ 180はする必要がありますが、あなたはバグでを持っているかもしれません"EndPosition.To.Value"からmarginTopを決定していますが、アニメーションの "EndPosition.To"を変更します。

"EndPosition.To"を元の値に戻さない場合、marginTopは決して同じものになることはありません。気を付けるだけのこと。

+0

これは下に行くので、これは機能しません。上、左は0,0だから下に行く。 –

+0

終了位置は-545で、マージンの底は103です。私はここで2つの異なる種類の座標を混合していると思います。これは私の問題です –

+0

@Joseph Le Brech - バグを修正しました。私が与えた公式は、iq = 40のときmarginBottomと等しくなり、iq = 180のときmarginTopと等しくなります。しかし、あなたはmarginTopとmarginBottomをどうやって決めているかチェックする必要があります – MerickOWA

関連する問題