2011-06-17 50 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附加屬性