private void BtnQuadratciBezier_Click(object sender, RoutedEventArgs e) { this.inkCanvas.Strokes.Clear(); Point p1 = new Point() { X = 200, Y = 400 }; Point p2 = new Point() { X = 300, Y = 200 }; Point p3 = new Point() { X = 400, Y = 400 }; List <Point> points = BezierHelper.getQuadraticBezierPoints(p1, p2, p3, Convert.ToInt16(txtCount.Text)); StylusPointCollection stylusPointCollection = new StylusPointCollection(); for (int i = 0; i < points.Count; i++) { stylusPointCollection.Add(new StylusPoint(points[i].X, points[i].Y)); } Stroke stroke = new Stroke(stylusPointCollection); stroke.DrawingAttributes = new DrawingAttributes { Width = 1, Height = 1, Color = Color.FromRgb(0, 0, 0) }; this.inkCanvas.Strokes.Add(stroke); }
private void drawLine(float nCompress, Point p, Point lastTwoPoint, Point lastOnePoint) { startCount++; if (!isStartedPoint) { startTime = (DateTime.Now.Ticks - dtFrom.Ticks) / 10000; lastControlPoint = p; stylusPointCollection = new StylusPointCollection(); stylusPointCollection.Add(new StylusPoint(p.X, p.Y, 0.1f)); stroke = new Stroke(stylusPointCollection); stroke.DrawingAttributes = new DrawingAttributes { Width = brushWidth, Height = brushWidth, Color = Color.FromRgb(0, 0, 0) }; isStartedPoint = true; isFirst = true; ic.Strokes.Add(stroke); isHaveLastControlPoint = false; } else { isFirst = false; if (startCount < 3) { stylusPointCollection.Add(new StylusPoint(p.X, p.Y, 0.1f)); } else { var controlPoints = BezierHelper.getControlPoints(0.4, lastTwoPoint, lastOnePoint); if (isHaveLastControlPoint && lastControlPoint.X != 0 && lastControlPoint.Y != 0) { var quadraticBezierPoints = BezierHelper.getQuadraticBezierPoints(lastControlPoint, lastTwoPoint, controlPoints[0], 6); foreach (var item in quadraticBezierPoints) { stylusPointCollection.Add(new StylusPoint(item.X, item.Y, nCompress)); } lastControlPoint = controlPoints[1]; } else { isHaveLastControlPoint = true; lastControlPoint = p; stylusPointCollection.Add(new StylusPoint(p.X, p.Y, nCompress)); } } Console.WriteLine("draw5:{0},{1},{2}", p.X, p.Y, nCompress); } points.Add(new MyPoint { Point = p, Pressure = nCompress, IsFirst = isFirst, LastControlPoint = lastControlPoint }); }
private void drawLine2(bool isFrist, float nCompress, Point p, MyPoint lastTwoPoint, MyPoint lastOnePoint) { if (isFrist) { Console.WriteLine("isFirst:" + isFrist); startTime = (DateTime.Now.Ticks - dtFrom.Ticks) / 10000; lastControlPoint = p; stylusPointCollection = new StylusPointCollection(); stylusPointCollection.Add(new StylusPoint(p.X, p.Y, 0.1f)); stroke = new Stroke(stylusPointCollection); stroke.DrawingAttributes = new DrawingAttributes { Width = brushWidth, Height = brushWidth, Color = Color.FromRgb(0, 0, 0) }; ic.Strokes.Add(stroke); isHaveLastControlPoint = false; } else { if ((lastTwoPoint.Point.X == 0 && lastTwoPoint.Point.Y == 0) || (lastOnePoint.Point.X == 0 && lastOnePoint.Point.Y == 0)) { stylusPointCollection.Add(new StylusPoint(p.X, p.Y, 0.1f)); } else { var controlPoints = BezierHelper.getControlPoints(0.4, lastTwoPoint.Point, lastOnePoint.Point); if (isHaveLastControlPoint && lastOnePoint.LastControlPoint.X != 0 && lastOnePoint.LastControlPoint.Y != 0) { Console.WriteLine("lastOnePoint.LastControlPoint:" + lastOnePoint.LastControlPoint); var quadraticBezierPoints = BezierHelper.getQuadraticBezierPoints(lastOnePoint.LastControlPoint, lastTwoPoint.Point, controlPoints[0], 12); foreach (var item in quadraticBezierPoints) { stylusPointCollection.Add(new StylusPoint(item.X, item.Y, nCompress)); } lastControlPoint = controlPoints[1]; } else { isHaveLastControlPoint = true; stylusPointCollection.Add(new StylusPoint(p.X, p.Y, nCompress)); } } Console.WriteLine("draw5:{0},{1},{2}", p.X, p.Y, nCompress); } }