protected override void OnMouseLeftButtonUp(MouseButtonEventArgs e) { if (_draggedHandle == null) { return; } ReleaseMouseCapture(); _draggedHandle = null; BezierHandleReleased?.Invoke(); }
private void ConfigureBezierHandle(BezierHandle handle, Line handleLine) { handle.MouseLeftButtonDown += (sender, args) => { if (IsReadOnly) { return; } _initialPosition = new Point((double)handle.GetValue(Canvas.LeftProperty) + 4d, (double)handle.GetValue(Canvas.TopProperty) + 4d); _dragStartMousePosition = args.GetPosition(this); _draggedHandle = handle; Mouse.Capture(this); }; }
public override void OnApplyTemplate() { base.OnApplyTemplate(); _path = GetTemplateChild("Path") as Path; _canvas = GetTemplateChild("Canvas") as Canvas; _handleA = GetTemplateChild("HandleA") as BezierHandle; _handleB = GetTemplateChild("HandleB") as BezierHandle; _handleALine = GetTemplateChild("HandleALine") as Line; _handleBLine = GetTemplateChild("HandleBLine") as Line; ConfigureBezierHandle(_handleA, _handleALine); ConfigureBezierHandle(_handleB, _handleBLine); _curveOptionsComboBox = GetTemplateChild("CurveOptionsComboBox") as ComboBox; _curveOptionsComboBox.ItemsSource = new List <CurveType> { CurveType.Linear, CurveType.Hold, CurveType.Bezier }; UpdateForCurveType(); }
private void UpdateBezierHandle(BezierHandle handle, Line handleLine, in Vector2 location)