2014-01-20 24 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