动态地将控件布置成圆形/矩形

时间:2014-04-07 01:36:52

标签: c# xaml windows-8 winrt-xaml

只是想知道是否有办法将控件安排在像圆桌这样的圆形形状中。控件可以是图像或文本框。例如:如果我有一个椭圆形状,我所看的就是沿着椭圆的周边边界填充控件。如果有办法使用xaml和c#,请告诉我。这是我到目前为止所做的。我创建了一个矩形,并使用Point Type获得了X,Y位置值。基于这些点,我可以创建一个文本框..但不能循环,直到我再次达到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方向添加控件... Ellipse也可以替换为Rectangle。这些控件正在添加,但它们只会在一列中相互添加。

<StackPanel x:Name="SpTable1">

1 个答案:

答案 0 :(得分:1)

你必须使用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);
        }

希望这有帮助