public override void MovePolygon(int x, int y, PolyMoveModes mode) { if (mode == PolyMoveModes.WholePoly) { base.MovePolygon(x, y, mode); } else if (mode == PolyMoveModes.ByVertex) { base.DeleteShape(); Point newInitialVertex = new Point(x, y); Point tmpVertex = base.Vertices[(selectedVertexIndex + 2) % 4 == 0 ? 1 : (selectedVertexIndex + 2) % 4]; Func((int)newInitialVertex.X, (int)newInitialVertex.Y, (int)tmpVertex.X, (int)tmpVertex.Y); } }
public virtual void MovePolygon(int x, int y, PolyMoveModes mode) { if (mode == PolyMoveModes.ByVertex) { DeleteShape(); if (Vertices[selectedVertexIndex] == InitialPoint) { InitialPoint = new Point(x, y); Vertices[0] = Vertices[Vertices.Count - 1] = InitialPoint; } else { Vertices[selectedVertexIndex] = new Point(x, y); } DrawShape(); } else if (mode == PolyMoveModes.WholePoly) { int Vx, Vy; List <Point> tmp = new List <Point>(); Vx = ((int)x - (int)Vertices[selectedVertexIndex].X); Vy = ((int)y - (int)Vertices[selectedVertexIndex].Y); foreach (Point pt in Vertices.ToList()) { if (pt.X + Vx > MainWindow.actualWidth || pt.X + Vx < 0 || pt.Y + Vy > MainWindow.actualHeight || pt.Y + Vy < 0) { MessageBox.Show("Poly would be out of bounds"); return; } else { tmp.Add(new Point(pt.X + Vx, pt.Y + Vy)); } } DeleteShape(); Vertices = tmp; InitialPoint = tmp[0]; DrawShape(); } }