/** * * Coge la pieza de la peana donde este puesta * * */ private Pieza isTaken(ItemCollection it, ColorImagePoint j1P) { Pieza c = null; Pieza pieceF = null; int i = 0; while (i < it.Count && !take) { c = (Pieza)it.GetItemAt(i); //Posicion de la pieza if (j1P.X >= c.Margin.Left && j1P.X <= (c.Margin.Left + c.Width) && j1P.Y >= c.Margin.Top && j1P.Y <= (c.Margin.Top + c.Height)) { contTake++; if (contTake == 30) { //Guarda la posicion inicial de la pieza mar = new Thickness(c.Margin.Left, c.Margin.Top, 0, 0); //Marca que se ha cogido una pieza take = true; contTake = 0; pieceF = c; } } i++; } return(pieceF); }
/** * Verifica que la posicion de la pieza es correcta sino vuelve al lugar inicial de donde fue cogida */ private void isOkPosition(Pieza piece) { //Posicion de la pieza en la primera peana if (piece.Margin.Left >= this.peana.Margin.Left && (piece.Margin.Left + piece.Width) <= (this.peana.Margin.Left + this.peana.Width) && piece.Margin.Top >= this.peana.Margin.Top && (piece.Margin.Top + piece.Height) <= (this.peana.Margin.Top + this.peana.palo.Height)) { //Si la pieza colocada en la pena es mayor se coloca la nueva pieza if (piece.Size < peana.firstPiece().Size) { this.peana.remove(piece); this.peana1.remove(piece); this.peana2.remove(piece); //Colocala pieza bien colocada en la peana double alto = this.peana.Margin.Top + this.peana.palo.Height - this.piece.Height - (this.peana.count() * (piece.Height - 10)); double dis = peana.Margin.Left + ((peana.Width - piece.Width) / 2); piece.Margin = new Thickness(dis, alto + 30, 0, 0); peana.addPiece(piece); } else { //vuelve al inicio piece.Margin = mar; } } //posicion de la pieza en la segunda peana else if (piece.Margin.Left >= this.peana1.Margin.Left && (piece.Margin.Left + piece.Width) <= (this.peana1.Margin.Left + this.peana1.Width) && piece.Margin.Top >= this.peana1.Margin.Top && (piece.Margin.Top + piece.Height) <= (this.peana1.Margin.Top + this.peana1.palo.Height)) { //Si la pieza colocada en la pena es mayor se coloca la nueva pieza if (piece.Size < peana1.firstPiece().Size) { this.peana.remove(piece); this.peana1.remove(piece); this.peana2.remove(piece); //Colocala pieza bien colocada en la peana double alto = this.peana1.Margin.Top + this.peana1.palo.Height - this.piece.Height - (this.peana1.count() * (piece.Height - 10)); double dis = peana1.Margin.Left + ((peana1.Width - piece.Width) / 2); piece.Margin = new Thickness(dis, alto + 30, 0, 0); peana1.addPiece(piece); } else { //vuelve al inicio piece.Margin = mar; } } //posicion de la pieza en la tercera peana else if (piece.Margin.Left >= this.peana2.Margin.Left && (piece.Margin.Left + piece.Width) <= (this.peana2.Margin.Left + this.peana2.Width) && piece.Margin.Top >= this.peana2.Margin.Top && (piece.Margin.Top + piece.Height) <= (this.peana2.Margin.Top + this.peana2.palo.Height)) { //Si la pieza colocada en la pena es mayor se coloca la nueva pieza if (piece.Size < peana2.firstPiece().Size) { this.peana.remove(piece); this.peana1.remove(piece); this.peana2.remove(piece); //Colocala pieza bien colocada en la peana double alto = this.peana2.Margin.Top + this.peana2.palo.Height - this.piece.Height - (this.peana2.count() * (piece.Height - 10)); double dis = peana2.Margin.Left + ((peana2.Width - piece.Width) / 2); piece.Margin = new Thickness(dis, alto + 30, 0, 0); peana2.addPiece(piece); } else { //vuelve al inicio piece.Margin = mar; } } else { //vuelve al inicio piece.Margin = mar; } }