2016-05-23 8 views
1
private void Form1_Load(object sender, EventArgs e) 
{ 
    for (int i = 0; i < pala.cantLetras; i++) 
    { guiones[i] = new Label(); 
     guiones[i].Text = "_"; 
     guiones[i].Font = new Font("Berlin Sans FB Demi", 25); 
     guiones[i].Size = new Size(18, 37); 
     guiones[i].Name = "guion" + i; 
     guiones[i].ForeColor = Color.Black; 
     guiones[i].BackColor = Color.Transparent; 
     guiones[i].Location = new Point(x, 341); 
     this.Controls.Add(guiones[i]); 

     recguion[i] = guiones[i].Bounds; 
     recguion[i] = new Rectangle(); 
     //recguion[i].Location = new Point(x, 341); 
     x = x + 50; 
    } 

    for (int i = 0; i < pala.cantLetras; i++) 
    { 
     labels[i] = new Label(); 
     labels[i].Size = new Size(25, 55); 
     labels[i].Name = "label" + i; 
     labels[i].Text = pala.palabra[i].ToString(); 
     labels[i].Font = new Font("Berlin Sans FB Demi", 20); 
     labels[i].ForeColor = Color.Black; 
     labels[i].BackColor = Color.Transparent; 
     labels[i].Location = new Point(y, 165); 
     this.Controls.Add(labels[i]); 
     posRandom[i] = y; 

     reclabel[i] = labels[i].Bounds; 
     reclabel[i] = new Rectangle(); 

     // reclabel[i].Location = new Point(y, 165); 

     y = y + 40; 

    } 

} 

reclabel []がその番号に対応するrecguion []といつ交差するかを知る必要があります。 例:reclabel [1]それ以外のものと交差するならば、それは間違っていると言わなければならないが、その1つだけである。 長方形には内側があります(またはそれは私が試したものです)ラベル[]とguiones [] これは私が試したものですが、それはうまくいきません。配列からの矩形の交差

private void intersecta() 
{ 
    int cont = 0; 

    for (int i = 0; i < pala.cantLetras; i++) 
    { 
     for (int j = 0; j < pala.cantLetras; j++) 
     { 
      if (i==j) 
      { 
       Rectangle intersect = Rectangle.Intersect(reclabel[i],   recguion[j]); 
       if (intersect != Rectangle.Empty) 
       { 
        MessageBox.Show("Intersection!"); 
        cont++; 
       } 

      } 
      if (cont != 0) 
      { 
       i = pala.cantLetras - 1; 
       j = pala.cantLetras - 1; 
      } 

     } 

    } 

} 

ありがとうございます!

+0

ネストされたループの必要はありません。 1つの配列をループし、そのインデックスの両方の長方形を '.IntersectsWith'でチェックしてください。 –

+1

'' recguion [i] = guiones [i] .Bounds;を設定し、直ちに '' recguion [i] = new Rectangle(); 'を書いてください。 –

答えて

0

ネストループの必要はありません。 1つの配列をループし、そのインデックスの両方の長方形を.IntersectsWithでチェックしてください。構文エラーがあると私は申し訳ありませんが、現時点でVisual Studioにアクセスすることはできません。

For(int i = 0; i < Array1.Length; i++) 
{ 
    if(Array1[i].IntersectsWith(Array2[i])) 
    { 
     //Intersected 
    } 
} 

しかし、またアンドリューが指摘したように、あなたはここで深刻な問題を抱えている:

reclabel[i] = new Rectangle(); 

あなただけの(異なる種類の!)新しいインスタンスで、すべてのデータを上書きしています。

+0

私はそれをやろうとしましたが、何をするべきかわかりません。本当にありがとうございました – sol

+0

Iveは再びそれを変更し、働いた!ありがとうございました!!!!!! – sol