簡體   English   中英

畫布和網格之間的差異,以移動,調整大小和旋轉UIElement

[英]Difference between Canvas and Grid to Move, Resize, Rotate UIElements

我想開發一個可以動態添加控件的編輯器,然后再移動,調整大小或旋轉以使用此UIElements構建窗口。

我的問題是,對於此UIElement的容器,網格或畫布,誰更合適?

畫布處於絕對位置,可能具有更好的轉換精度。 但是,當我以不同的屏幕分辨率顯示該應用程序時,響應速度會變慢嗎? 我對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;
        }
    }

但是對於Canvas或Grid,當我單擊UIElement且不移動時,UIElement總是從光標移動x,y。 也許這不是最好的方法。 如果您還有關於如何構建此功能的教程,也會對我有幫助。 我是新來的東西。

非常感謝和問候!

我只是為這個問題提供一個簡短的答案,因為它可能會因為過於主觀而被社區拒絕 我已經可以看到近距離的投票了。

因此,我認為, Canvas是用於此目的的更好的控件。 由於一個原因,它對Grid布局要求不高,因此效率更高。 另一個主要原因是,使用Canvas.TopCanvas.Left屬性移動項目是完美的……要移動其他Panel的項目,您通常不得不設置Margin屬性,而這遠非理想。

至於您的項目在單擊時移動……這只是您代碼中的一個錯誤,這不是正常的行為-除非我們告知,否則控件不會自行移動。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM