public void GenerateBezierPath(PathPreviewAlgorithms pathPreview) { BezierHandle prevBezierHandle = null; bool firstMove = true; foreach (var aBezierHandle in this.BezierHandleList) { if (prevBezierHandle == null) { prevBezierHandle = aBezierHandle; continue; } if (firstMove) { this.InProgressPath.MoveTo(prevBezierHandle.AnchorPoint); firstMove = false; } this.InProgressPath.CubicTo( prevBezierHandle.MouseControlPoint, aBezierHandle.TheOtherControlPoint, aBezierHandle.AnchorPoint); prevBezierHandle = aBezierHandle; } if (pathPreview == PathPreviewAlgorithms.LinearClose) { this.InProgressPath.Close(); } else if (pathPreview == PathPreviewAlgorithms.Close) { this.InProgressPath.CubicTo( this.BezierHandleList.Last().MouseControlPoint, this.BezierHandleList.First().TheOtherControlPoint, this.BezierHandleList.First().AnchorPoint); this.InProgressPath.Close(); } }
private void PathPreviewPickerChanged(object sender, EventArgs e) { switch (pathPreviewPicker.SelectedItem as string) { default: case "Open": this.pathPreview = PathPreviewAlgorithms.Open; break; case "LinearClose": this.pathPreview = PathPreviewAlgorithms.LinearClose; break; case "Close": this.pathPreview = PathPreviewAlgorithms.Close; break; } //保存 SaveProperties.PathPreviewAlgorithms = pathPreviewPicker.SelectedIndex; pathPreviewCanvasView.InvalidateSurface(); }