Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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
            });
        }
Esempio n. 3
0
        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);
            }
        }