ループのサイクルごとに、Silverlightキャンバスに再描画します。 出来ますか?

c# canvas draw silverlight
ループのサイクルごとに、Silverlightキャンバスに再描画します。 出来ますか?

どんな助けやポインタも大歓迎です。

基本的に、「ターン」後に一度、いくつかの楕円をキャンバスに移動または再描画しようとしています。

現時点では、ボタンをクリックして、楕円をキャンバス内の新しい場所にRenderTransformできます。 たとえば、TranslateTransformのX値とY値を各ループごとに1つずつ増やすなど、これを複数回実行しようとすると、アプリケーション全体がハングします。 これはRenderTransformの問題ですか? キャンバス? MainPageスレッド? コードはしっかりしているように見えるので、楕円を2回以上動かさない理由については謎です。

private void update()
    {
        int x = 0;
        int y = 0;
        while (turns <= 5)
        {
            TranslateTransform t = new TranslateTransform();
            t.X = x + 1;
            t.Y = y + 1;
            // agent is a child element of a canvas.
            agent.RenderTransform = t;
            turns--;
        }
    }

  1  0


ベストアンサー

CompositionTargetを使用できます。http://msdn.microsoft.com/en-をご覧ください。 us / library / ms748838.aspx [この例] + http://blogs.msdn.com/b/brandf/archive/2007/10/09/fun-with-animation-part-1-compositiontarget-rendering.aspx [別の良い例]

このように使用してください。

private void Update(object sender, EventArgs e)
{
     //Your code here
}

Renderingイベントをフックします CompositionTarget.Rendering + = Update;

編集:Canvasを使用している場合、Canvas.LeftおよびCanvas.Top添付プロパティを使用することをお勧めします

1


タイトルとURLをコピーしました