2011-06-17 53 views
1

任何帮助或指针将大规模赞赏。在循环的每个循环中重绘为silverlight画布。可能吗?

基本上我试图移动或重新绘制一些椭圆到画布一旦“转”。

此刻我可以点击一个按钮来渲染将椭圆转换为画布内的新位置。每当我尝试多次执行此操作时,例如,将TranslateTransform X和Y值每增加一个循环,整个应用程序都会挂起。这是RenderTransform的问题吗?画布? MainPage线程?代码看起来很稳固,所以它为什么简单地不会将椭圆移动多次是个谜。

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--; 
     } 
    } 
+0

当我们看到相关的源代码时,更容易发现问题。 – 2011-06-17 12:58:53

+0

你说得对,这是更新方法。 – Christian 2011-06-17 13:14:22

回答

1

您可以使用CompositionTarget它会帮助你在this example
another good example


看起来像这样使用:

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

和钩渲染事件CompositionTarget.Rendering += Update;

编辑:如果您使用Canvas,最好使用Canvas.Left和Canvas.Top附加属性