Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 画布和网格在移动、调整大小和旋转元素方面的差异_C#_Wpf_Canvas_Resize - Fatal编程技术网

C# 画布和网格在移动、调整大小和旋转元素方面的差异

C# 画布和网格在移动、调整大小和旋转元素方面的差异,c#,wpf,canvas,resize,C#,Wpf,Canvas,Resize,我想开发一个编辑器,可以动态添加控件,然后移动、调整大小或旋转以构建一个包含这些元素的窗口 我的问题是,对于包含这些元素的容器、网格还是画布,谁更合适? 画布在绝对位置工作,可能具有更好的转换精度。但是,当我以不同的屏幕分辨率显示应用程序时,响应性会降低吗?我不太清楚网格或画布的优点/缺点 我用画布和网格制作了一个示例,用以下代码移动UIElement: private void ui_MouseMove(object sender, MouseEventArgs e) {

我想开发一个编辑器,可以动态添加控件,然后移动、调整大小或旋转以构建一个包含这些元素的窗口

我的问题是,对于包含这些元素的容器、网格还是画布,谁更合适?

画布在绝对位置工作,可能具有更好的转换精度。但是,当我以不同的屏幕分辨率显示应用程序时,响应性会降低吗?我不太清楚网格或画布的优点/缺点

我用画布和网格制作了一个示例,用以下代码移动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。也许这不是最好的方法如果您还有关于如何构建此功能的教程,也会对我有所帮助。我对这方面还不熟悉


非常感谢和问候

下面我将简要回答这个问题。我已经看到了一次势均力敌的投票

因此,在我看来,
Canvas
是用于此目的的更好的控件。一个原因是,它没有
网格
的大量布局要求,因此效率更高。另一个主要原因是使用
Canvas.Top
Canvas.Left
属性来移动项目非常完美。。。要移动其他
面板中的项目
s,通常需要设置
Margin
属性,这远远不够理想


至于你的项目被点击时移动。。。这只是代码中的一个bug,不是正常的行为-除非我们告诉控件,否则它不会自行移动。

谢谢!此外,我还读了这篇文章,这篇文章对其他有同样问题的人很重要。问候语!