2013-04-25 108 views
-2

我輸入正確完成我的所有矩形垂直堆疊,每次繪製一個新的矩形時有不同的顏色,但我努力讓輸出看起來像底部的圖片。請任何人幫助我走上正確的道路。獲取矩形垂直堆疊到水平,但保持形狀

rectangles

//List to strore all randomly generated rectangles 
    List<Rectangle> rectangleCollection = new List<Rectangle>(); 
    //Counts the amount of time a rectangle needs to be drawn 
    int count = 0; 

    public static Random ran = new Random(); 

    void CreateRectangle() 
    { 
     int TallestRectangle = 0; ; 


     int PrevRecY = 0; 

     Graphics graphic = pictureBox1.CreateGraphics(); 
     SolidBrush brush; 

     foreach (Rectangle rect in rectangleCollection) 
     { 
      if (rect.Height > TallestRectangle) 
       TallestRectangle = rect.Height; 
     } 

     foreach (Rectangle rect in rectangleCollection) 
     { 
      graphic.FillRectangle(brush = new SolidBrush(Color.FromArgb(ran.Next(1, 255), ran.Next(1, 255), ran.Next(1, 255))), 
       new Rectangle(rect.X + PrevRecY, (TallestRectangle - rect.Height), rect.Width, rect.Height)); 

      PrevRecY += rect.Width; 
     } 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     count = int.Parse(textBox1.Text); 
     for (int i = 0; i < count; i++) 
     { 
      GetRandomRectangle(); 
     } 
     CreateRectangle(); 
    } 

    void GetRandomRectangle() 
    { 
     Graphics graph = this.CreateGraphics(); 
     int x = 0; 
     int y = 0; 

     int width = ran.Next(20, 100); 
     int height = ran.Next(30, 150); 

     Rectangle rec1 = new Rectangle(x, y, width, height); 
     rectangleCollection.Add(rec1); 
    } 
+0

你試過了什麼?你的代碼只是產生問題 – 2013-04-25 10:37:03

+0

這個問題不是很清楚,可以使用改進,很難理解你的具體問題是什麼 - 你說你正在掙扎,但你不認同什麼。 – Amicable 2013-04-25 10:41:49

+0

在同一基線上從左至右彼此相鄰放置的一組隨機矩形。輸出:輸出表示與輸入矩形所描述的相同面積和結果形狀的垂直堆疊矩形的最小數量。 – TheJunior 2013-04-25 11:07:13

回答

2

對於每個矩形,責令最短至最高,

  • 作出這樣的高度的橫長方形,從比更高所有矩形的左邊開始,在右邊結束所有矩形的權利。

每當您創建一個水平矩形時,將它放置在最低水平矩形的頂部(按照水平位置),您正在創建一個水平矩形。

+0

我怎麼安排他們從最短到最高? – TheJunior 2013-04-25 11:08:33

+0

你沒有安排他們,只是訂購他們,所以你可以循環。你可以比較'rectangle.Top',因爲它們都從相同的底點開始 – 2013-04-25 11:11:55

相關問題