/// <summary> /// 鼠标按下 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void contentsCanvas_MouseDown(object sender, MouseButtonEventArgs e) { ///取消连线 if (e.LeftButton == MouseButtonState.Pressed && e.RightButton == MouseButtonState.Released && isPressAlt && currentMouseOverFunctionBox != null && currentMouseOverFunctionBox.MouseMoveUI != null) { removeMLParamitemBezierLine(currentMouseOverFunctionBox.MouseMoveUI); return; } if (e.RightButton == MouseButtonState.Pressed && e.LeftButton == MouseButtonState.Released && currentMouseOverFunctionBox == null) { isMove = true; forntPoint = e.GetPosition(contentsCanvas); } else if (e.LeftButton == MouseButtonState.Pressed && currentMouseOverFunctionBox != null && currentMouseOverFunctionBox.MouseMoveUI == null) { isMove = true; forntPoint = e.GetPosition(contentsCanvas); } else if (e.LeftButton == MouseButtonState.Pressed && e.RightButton == MouseButtonState.Released && currentMouseOverFunctionBox == null) { cancleSelectBox(); isToRect = true; forntPoint = e.GetPosition(contentsCanvas); } else if (e.LeftButton == MouseButtonState.Pressed && e.RightButton == MouseButtonState.Released && currentMouseOverFunctionBox != null && currentMouseOverFunctionBox.MouseMoveUI != null) { HiddenTree(); iscreateBz = true; creatBz = null; creatBz = new BezierLine(); previous = currentMouseOverFunctionBox.MouseMoveUI; if (currentMouseOverFunctionBox.MouseMoveUI as BezierLinkLayout.ScriptIParameterLayout.InputParaItemLayout == null) { creatPoint = e.GetPosition(contentsCanvas); creatBz.BindPointEnd(this, "CreatPoint"); creatBz.BindPointStart(currentMouseOverFunctionBox.MouseMoveUI, "LinkPosition"); //startisleft = false; } else { creatBz.BindPointEnd(currentMouseOverFunctionBox.MouseMoveUI, "LinkPosition"); creatPoint = e.GetPosition(contentsCanvas); creatBz.BindPointStart(this, "CreatPoint"); //startisleft = true; } if (creatBz != null) { Add(creatBz); Canvas.SetZIndex(creatBz, -10); } //contentsCanvas.CaptureMouse(); //限制鼠标 } }
/// <summary> /// 连接贝塞尔曲线到2个点 /// </summary> /// <param name="bz"></param> /// <param name="mlp1"></param> /// <param name="mlp2"></param> public void LinkBezier(BezierLine bz, MLParatItemLayout mlp1, MLParatItemLayout mlp2, bool isAddtoCanvas = true) { if (bz == null || mlp1 == null || mlp2 == null) { return; } BezierLine ol = mlp1.SetLink(bz); if (ol != null) { Del(ol); } ol = mlp2.SetLink(bz); if (ol != null) { Del(ol); } bz.ClearStartBind(); bz.ClearEndBind(); if (mlp1 as BezierLinkLayout.ScriptIParameterLayout.InputParaItemLayout != null) { bz.BindPointStart(mlp2, "LinkPosition"); bz.BindPointEnd(mlp1, "LinkPosition"); } else { bz.BindPointStart(mlp1, "LinkPosition"); bz.BindPointEnd(mlp2, "LinkPosition"); } IParatItem ipl = (bz.LeftElement.DataContext as IParatItem); IParatItem ipr = (bz.RightElement.DataContext as IParatItem); ipl.LinkIParatItem = ipr; ipr.LinkIParatItem = ipl; bz.Color = ipl.Color; if (isAddtoCanvas) { Add(bz); } }