Example #1
0
        private void AddStrokeAsPoints(Stroke stroke)
        {
            int count = 0;

            StylusPointCollection spc = new StylusPointCollection();

            foreach (StylusPoint sp in stroke.StylusPoints)
            {
                double x = sp.X - (sp.X % 1) + (inkDA.Width / 2);
                double y = sp.Y - (sp.Y % 1) + (inkDA.Height / 2);

                StylusPoint point = new StylusPoint(x, y);

                if (!spc.Contains(point))
                {
                    spc.Add(point);
                }

                Stroke st = new Stroke(spc);
                st.DrawingAttributes = inkDA;

                if (!canvas.Strokes.Contains(st))
                {
                    canvas.Strokes.Add(st);
                    count++;
                }
                spc = new StylusPointCollection();
            }
            ActionHistory.Add(Actions.AddStroke);
            UndoPoints.Add(count);
            dirty = true;
        }
Example #2
0
        private void AddStrokeAsPoints(Stroke stroke, PenSize size)
        {
            int count = 0;

            StylusPointCollection spc = new StylusPointCollection();

            foreach (StylusPoint sp in stroke.StylusPoints)
            {
                int scale = 1;

                if (size == PenSize.Medium)
                {
                    scale = 2;
                }
                if (size == PenSize.Large)
                {
                    scale = 4;
                }

                double x = sp.X - (sp.X % scale) + 0.5;
                double y = sp.Y - (sp.Y % scale) + 0.5;

                StylusPoint point = new StylusPoint(x, y);
                if (!spc.Contains(point))
                {
                    spc.Add(point);
                }

                if ((size == PenSize.Medium) || (size == PenSize.Large))
                {
                    point = new StylusPoint(x + 1, y);
                    if (!spc.Contains(point))
                    {
                        spc.Add(point);
                    }
                    point = new StylusPoint(x, y + 1);
                    if (!spc.Contains(point))
                    {
                        spc.Add(point);
                    }
                    point = new StylusPoint(x + 1, y + 1);
                    if (!spc.Contains(point))
                    {
                        spc.Add(point);
                    }

                    if (size == PenSize.Large)
                    {
                        point = new StylusPoint(x + 2, y);
                        if (!spc.Contains(point))
                        {
                            spc.Add(point);
                        }
                        point = new StylusPoint(x + 3, y);
                        if (!spc.Contains(point))
                        {
                            spc.Add(point);
                        }
                        point = new StylusPoint(x + 2, y + 1);
                        if (!spc.Contains(point))
                        {
                            spc.Add(point);
                        }
                        point = new StylusPoint(x + 3, y + 1);
                        if (!spc.Contains(point))
                        {
                            spc.Add(point);
                        }
                        point = new StylusPoint(x, y + 2);
                        if (!spc.Contains(point))
                        {
                            spc.Add(point);
                        }
                        point = new StylusPoint(x + 1, y + 2);
                        if (!spc.Contains(point))
                        {
                            spc.Add(point);
                        }
                        point = new StylusPoint(x + 2, y + 2);
                        if (!spc.Contains(point))
                        {
                            spc.Add(point);
                        }
                        point = new StylusPoint(x + 3, y + 2);
                        if (!spc.Contains(point))
                        {
                            spc.Add(point);
                        }
                        point = new StylusPoint(x, y + 3);
                        if (!spc.Contains(point))
                        {
                            spc.Add(point);
                        }
                        point = new StylusPoint(x + 1, y + 3);
                        if (!spc.Contains(point))
                        {
                            spc.Add(point);
                        }
                        point = new StylusPoint(x + 2, y + 3);
                        if (!spc.Contains(point))
                        {
                            spc.Add(point);
                        }
                        point = new StylusPoint(x + 3, y + 3);
                        if (!spc.Contains(point))
                        {
                            spc.Add(point);
                        }
                    }
                }

                if (!spc.Contains(point))
                {
                    spc.Add(point);
                }

                Stroke st = new Stroke(spc);
                st.DrawingAttributes = inkDA;

                if (!canvas.Strokes.Contains(st))
                {
                    canvas.Strokes.Add(st);
                    count++;
                }
                spc = new StylusPointCollection();
            }
            ActionHistory.Add(Actions.AddStroke);
            UndoPoints.Add(count);
            dirty = true;
        }
        public static StylusPointCollection removeRedundancy(StylusPointCollection points)
        {
            //Remove duplicate points
            StylusPointCollection workingList = new StylusPointCollection();

            for (int i = 1; i < points.Count; i++)
            {
                var point1 = points[i - 1];
                var point2 = points[i];

                if (!(point1.X == point2.X && point1.Y == point2.Y))
                {
                    if (! workingList.Contains(point1))
                    workingList.Add(point1);
                }
            }
            return workingList;
        }