internal virtual void ApplyChanges(int type, object value) { /* * Типы изменений: * 1 - позиция * 2 - размер * 3 - видимость * 4-inf - отдельно для каждого * */ switch (type) { case 1: //позиция Location = (Point)value; break; case 2: //размер ChangeScale((float)value); break; case 3: //видимость Visible = (Boolean)value; break; } FillPropPanel(parentTabPage.GetPropertiesPanel()); }
public static void Init(Control origin, Control target, InnerTabPage _parent) { parent = _parent; controlAligment = new ControlAligment(parent.GetDesktopPanel()); moving = false; scaling = false; bottomEdge = false; upperEdge = false; leftEdge = false; rightEdge = false; cursorOrigin = Point.Empty; origin.Click += (sender, e) => { ((InnerControl)target).FillPropPanel(parent.GetPropertiesPanel()); }; origin.MouseDown += Control_MouseDown; // Активировать изменение объекта origin.MouseUp += Control_MouseUp; // Прекратить изменение объекта origin.MouseDown += (sender, e) => { startLocation = target.Location; }; origin.MouseUp += (sender, e) => { if (((Control)sender).Location != startLocation) { parent.SaveUndoAction(new ActionStack((InnerControl)target, 1, startLocation)); } }; origin.MouseMove += (sender, e) => MoveControl(target, e); // Само изменение рассчитывается здесь }