/// <summary> /// Permite crear una coneccion. Las conecciones solo pueden /// ser creadas por el tipo ChartElement en el metodo AddConnection. /// Utilice el constructor de su tipo ChartElement para adicionar /// las conecciones de salida de su elemento. /// </summary> /// <param name="from">Pin de salida de la coneccion.</param> /// <param name="to">Pin de llegada de la coneccion, puede ser null.</param> internal Connection(Pin from, Pin to) { this.From = from; this.To = to; }
/// <summary> /// Metodo que visualiza un pin. /// </summary> /// <param name="gr">Objeto Graphics utilizado para pintar.</param> /// <param name="pin">Pin que se desea visualizar.</param> protected virtual void DrawPin(Graphics gr, Pin pin) { Point position = pin.Position; Rectangle pinRectangle = new Rectangle(position.X - PinSize.Width / 2, position.Y - PinSize.Height / 2, PinSize.Width, PinSize.Height); switch (pin.PinType) { case PinType.Input: gr.FillEllipse(Brushes.White, pinRectangle); gr.DrawEllipse(Pens.Black, pinRectangle); break; case PinType.Output: gr.FillRectangle(Brushes.White, pinRectangle); gr.DrawRectangle(Pens.Black, pinRectangle); break; } }
/// <summary> /// Metodo que se invoca cuando se presiona un boton del mouse. /// </summary> /// <param name="e"></param> protected override void OnMouseDown(MouseEventArgs e) { lastMousePlace = FromClientToCanvas(e.Location); ChartElement nextSelected = null; foreach (ChartElement c in Charts) { if (c.Display.Contains(FromClientToCanvas(e.Location))) { nextSelected = c; } } if (SelectedItem != null) { SelectedItem.Selected = false; } SelectedItem = nextSelected; if (SelectedItem != null) { SelectedItem.Selected = true; } if (e.Button == MouseButtons.Right) { isConnecting = false; modifyingConnection = null; if (SelectedItem != null) { ContextMenu cm = GetContextMenuFor(SelectedItem); ContextMenu = cm; } else { ContextMenu cm = GetGlobalContextMenu(FromClientToCanvas(e.Location)); ContextMenu = cm; } } else { if (isConnecting) { Pin nearestInput = null; if (SelectedItem != null) { foreach (Pin input in SelectedItem.ValidInputs) { if (nearestInput == null || Distance(input.Position, FromClientToCanvas(e.Location)) < Distance(nearestInput.Position, FromClientToCanvas(e.Location))) { nearestInput = input; } } } modifyingConnection.To = nearestInput; isConnecting = false; modifyingConnection = null; } } Invalidate(); base.OnMouseDown(e); }
/// <summary> /// Permite crear una coneccion. Las conecciones solo pueden ser creadas por el tipo ChartElement en el metodo AddConnection. /// Utilice el constructor de su tipo ChartElement para adicionar las conecciones de salida de su elemento. /// </summary> /// <param name="from">Pin de salida de la coneccion.</param> /// <param name="to">Pin de llegada de la coneccion, puede ser null.</param> internal Connection(Pin from, Pin to) { this.From = from; this.To = to; }