private void Linked(object obj) { if (текущаяСвязь != null && obj is БазовыйОбъект) { БазовыйОбъект curObj = obj as БазовыйОбъект; if (ArrowSetLink(curObj) != null) { // если не нарушает условий страшной логики текущаяСвязь.ОбъектПредыдущий = объектВыбранный; текущаяСвязь.ОбъектСледующий = curObj; curObj.AddArrows(текущаяСвязь); текущаяСвязь.X2 = curObj.Margin.Left; текущаяСвязь.Y2 = curObj.Margin.Top + curObj.Height / 2; } else { ArrowBreak(); } } }
public void ArrowBegin() { if (объектТекущий != null) { объектВыбранный =о бъектТекущий; объектТекущий = null; } if (объектВыбранный != null) { текущаяСвязь = new Связь(); offset.X = объектВыбранный.Margin.Left + объектВыбранный.Width; offset.Y = объектВыбранный.Margin.Top + объектВыбранный.Height / 2; текущаяСвязь.Stroke = Brushes.Red; текущаяСвязь.StrokeThickness = 3; текущаяСвязь.X1 = offset.X; текущаяСвязь.Y1 = offset.Y; ArrowEndChange(); AreaGrid.Children.Add(текущаяСвязь); Panel.SetZIndex(текущаяСвязь, -1); текущаяСвязь.ОбъектПредыдущий = объектВыбранный; объектВыбранный.AddArrows(текущаяСвязь); } }