2014-04-07 134 views
1

想知道是否有辦法將圓形控件安排成圓形的形狀。控制可以是圖像或文本框。例如:如果我有一個橢圓形狀,所有我期望的是沿着橢圓的周邊邊界填充控件。請讓我知道是否有辦法使用xaml和c#來做到這一點。這是我迄今爲止所做的。我創建了一個矩形,並使用點類型具有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方向上添加控件...橢圓也可以由Rectangle替換。這些控件正在添加,但是它們只會被添加到只有一列之中。

<StackPanel x:Name="SpTable1"> 
+0

使用的畫布。所以你可以放置指定x,y座標 – voddy

+0

的項目,我用Canvas替換了stackpanel,它工作。至少我現在可以看到一些圓圈形狀。 – user3504925

回答

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); 
     } 

希望這有助於

+0

控件像堆棧一樣對齊,而不是像圓圈一樣。沒有Controls Type.Add()。我需要將它們添加到面板。相反,我們需要爲winrt-xaml使用children.add()。 – user3504925

+0

它們可能因爲單元類型而堆疊,我使用了像素,但是您應該提高半徑以滿足您的任何需要。 –