2014-01-20 48 views
1

我想開發一個編輯器,可以動態添加控件以及之後移動,調整大小或旋轉以使用此UIElements構建窗口。畫布和網格之間的區別移動,調整大小,旋轉UIElements

我的問題是誰是這個UIElements,網格或畫布的容器更好?

帆布正在絕對位置工作,也許有更好的轉換精度。但是當我以不同的屏幕分辨率顯示應用程序時,反應會不太敏感?我不太清楚Grid或Canvas的優點/缺點。

我打了一個比方用帆布和網格來移動的UIElement與此代碼:

private void ui_MouseMove(object sender, MouseEventArgs e) 
    { 
     if (m_IsPressed) 
     { 
      UIElement ui = (UIElement)sender; 
      TranslateTransform transform = new TranslateTransform(); 
      transform.X = Mouse.GetPosition(MyGridOrCanvas).X; 
      transform.Y = Mouse.GetPosition(MyGridOrCanvas).Y; 
      ui.RenderTransform = transform; 
     } 
    } 

但與帆布或網格,當我點擊的UIElement並沒有移動,UIElement的總移動X, y從我的光標。也許不是這樣做的最好方法。 如果您還有關於如何構建這些功能的教程也會對我有所幫助。我是新來的這個東西。

非常感謝你和問候!

回答

0

我只是簡單地回答這個問題it is likely to be closed by the community here for being too subjective。我可以看到一個近距離投票。

所以,在我看來,Canvas是一個更好的控制用於此目的。由於一個原因,它沒有Grid的相當大的佈局要求,所以它更有效率。另一個主要原因是使用Canvas.TopCanvas.Left屬性來移動物品是完美的......要移動其他Panel中的物品,您經常需要設置Margin屬性來代替,這非常不理想。

至於你的項目被點擊......這只是一個錯誤在你的代碼的時候移動這樣做,這是正常行爲 - 控制將不自行移動,除非我們告訴它。

+0

謝謝!另外我讀了這篇文章,對於有同樣問題的其他人可能很重要。問候! http://msdn.microsoft.com/en-us/magazine/ff646962.aspx – soydachi