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; 

    } 

} 

Ich muss wissen, wenn reclabel [] das recguion [] schneidet, das dieser Zahl entspricht. Bsp .: reclabel [1] Durchschneidet recguion [1], aber nur dieses, wenn es sich mit einem anderen schneidet, muss es sagen, dass es falsch ist. Die Rechtecke haben innen (oder das ist, was ich versuche) Labels [] und Guiones [] Dies ist, was ich versucht habe, aber es funktioniert nicht.Sich schneidende Rechtecke vom Array

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

     } 

    } 

} 

Vielen Dank!

+0

Eine verschachtelte Schleife ist nicht erforderlich. Durchlaufen Sie einfach ein Array und prüfen Sie beide Rechtecke an diesem Index mit '.IntersectsWith'. –

+1

Sie setzen 'recguion [i] = guiones [i] .Bounds;' und schreiben dann sofort mit 'recguion [i] = new Rectangle();', was nicht richtig erscheint. –

Antwort

0

Eine verschachtelte Schleife ist nicht erforderlich. Durchlaufen Sie einfach ein Array und überprüfen Sie beide Rechtecke an diesem Index mit .IntersectsWith. Ich entschuldige mich, wenn es Syntaxfehler gibt, ich habe momentan keinen Zugang zu Visual Studio.

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

Aber auch, wie Andrew darauf hingewiesen, haben Sie ein ernstes Problem hier: (! Einen anderen Typs)

reclabel[i] = new Rectangle(); 

Sie alle Ihre Daten mit einer neuen Instanz nur überschrieben werden.

+0

Ich habe versucht, das zu tun, aber es funktioniert nicht, ich weiß nicht, was ich sonst tun soll. Vielen Dank – sol

+0

Ive änderte es wieder und arbeitete !!! Vielen Dank!!!!!! – sol

Verwandte Themen