以圆形/矩形动态排列控件

本文关键字:排列 控件 动态 | 更新日期: 2023-09-27 17:57:07

只是想知道是否有办法像圆桌一样将控件排列成圆形。控件可以是图像或文本框。例如:如果我有一个椭圆形状,我所寻找的只是沿着椭圆的周边边框填充控件。请让我知道是否有办法使用 xaml 和 c# 执行此操作。这是我到目前为止所做的。我创建了一个矩形,并使用点类型具有 X、Y 位置值。根据这些点,我可以创建一个文本框。但无法循环,直到 I 再次达到 0,0。0,0 是左下角位置 (x,y)

for (int i = 0; i < count; i++)
        {
            TextBox tb = new TextBox();
            tb.Text = "Button " + i;
            Point p = new Point();
            p.X =  (int)(Math.Cos((double)i) * radius) + radius;
            p.Y = (int)(Math.Sin((double)i) * radius) + radius;
            Canvas.SetLeft(tb, p.X);
            Canvas.SetTop(tb, p.Y);
            SpTable.Children.Add(tb);
        }

同样需要在 Y 方向添加控件...椭圆也可以用矩形代替。控件正在添加,但它们仅添加到彼此下方的一列中。

<StackPanel x:Name="SpTable1">

以圆形/矩形动态排列控件

您必须使用 cos 和 sin(格式)计算文本框的位置。

这将创建 20 个以圆形图案排列的文本框。

        int radius = 200;
        for (int i = 1; i < 20; i++)
        {
            TextBox tb = new TextBox();
            tb.Left = (int)(Math.Cos((double)i) * radius) + radius;
            tb.Top = (int)(Math.Sin((double)i) * radius) + radius;
            this.Controls.Add(tb);
        }

希望这有帮助