private void DiagramCanvas_MouseRightButtonDown(object sender, MouseButtonEventArgs e) { if (movingLine && isOverEnd && !isOverMy) { flowLine.MouseRightButtonDown += new MouseButtonEventHandler(DiagramLine_MouseRightButtonDown); DiagramLine newLine = new DiagramLine(flowLine, startElement, endElement); DiagramLines.Add(newLine); movingLine = false; isOverMy = false; isOverEnd = false; flowLine = null; Mouse.Capture(null); } else if (movingLine && !isOverEnd && !isOverMy) { DiagramCanvas.Children.Remove(flowLine); movingLine = false; flowLine = null; Mouse.Capture(null); } }
private void CreateDiagramUILine(int startTag, int endTag, Point xy1, Point xy2, Brush stroke) { Line line = new Line { StrokeThickness = 4, Stroke = stroke, X1 = xy1.X, Y1 = xy1.Y, X2 = xy2.X, Y2 = xy2.Y, }; StackPanel startEle = DiagramCanvas.Children.OfType <StackPanel>() .FirstOrDefault(p => int.Parse(p.Tag.ToString()) == startTag); StackPanel endEle = DiagramCanvas.Children.OfType <StackPanel>() .FirstOrDefault(p => int.Parse(p.Tag.ToString()) == endTag); line.MouseRightButtonDown += new MouseButtonEventHandler(DiagramLine_MouseRightButtonDown); DiagramLine dl = new DiagramLine(line, startEle, endEle); DiagramLines.Add(dl); DiagramCanvas.Children.Add(line); Panel.SetZIndex(line, 2); }