Beispiel #1
0
        public void drawLine(int nPenStatus, int x, int y, int nCompress)
        {
            Point p = new Point(x, y);

            if (!pointIsInvalid(nPenStatus, p))
            {
                return;
            }

            if (nPenStatus == 0)
            {
                if (points.Count > 0)
                {
//                    Console.WriteLine(DateTime.Now.Ticks);
                    endTime = (DateTime.Now.Ticks - dtFrom.Ticks) / 10000;
                    var penStroke = new PenStroke {
                        points = points
                    };
                    penStroke.startTime = startTime;
                    penStroke.endTime   = endTime;
                    penStrokes.Add(penStroke);
                }

                points = new List <MyPoint>();
//                startTime = DateTime.Now.Ticks;
                IsHaveLastPoint = false;
            }
            else
            {
                if (IsHaveLastPoint)
                {
                    drawLine(lastPoint, p);


                    //LineGeometry lineGeometry = new LineGeometry(lastPoint, p);
                    //
                    //geometryGroup.Children.Add(lineGeometry);
                    Console.WriteLine("{0},{1}|{2},{3}", lastPoint.X, lastPoint.Y, p.X, p.Y);
                }
                else
                {
                    IsHaveLastPoint = true;
                    startTime       = (DateTime.Now.Ticks - dtFrom.Ticks) / 10000;
                }
                lastPoint = p;
                points.Add(new MyPoint {
                    Point = p, Pressure = nCompress
                });
            }
        }
Beispiel #2
0
        public void drawLine(int nPenStatus, int x, int y, int nCompress)
        {
            Point p = new Point(x, y);

            if (!pointIsInvalid(nPenStatus, p))
            {
                return;
            }

            if (nPenStatus == 0)
            {
                if (points.Count > 0)
                {
                    //                    Console.WriteLine(DateTime.Now.Ticks);
                    endTime = (DateTime.Now.Ticks - dtFrom.Ticks) / 10000;
                    var penStroke = new PenStroke {
                        points = points
                    };
                    penStroke.startTime = startTime;
                    penStroke.endTime   = endTime;
                    penStrokes.Add(penStroke);
                }

                isHaveLastControlPoint = false;
                index           = 0;
                points          = new List <MyPoint>();
                IsHaveLastPoint = false;
            }
            else
            {
                if (IsHaveLastPoint)
                {
                    drawLine(lastPoint, p);
                }
                if (points.Count == 0)
                {
                    IsHaveLastPoint = true;
                    startTime       = (DateTime.Now.Ticks - dtFrom.Ticks) / 10000;
                }



                lastPoint = p;
                points.Add(new MyPoint {
                    Point = p, Pressure = nCompress
                });
            }
        }
Beispiel #3
0
        private void Canvas_PreviewMouseUp(object sender, MouseButtonEventArgs e)
        {
            Console.WriteLine("Canvas_PreviewMouseUp");
            if (points.Count > 0)
            {
                //                    Console.WriteLine(DateTime.Now.Ticks);
                endTime = (DateTime.Now.Ticks - dtFrom.Ticks) / 10000;
                var penStroke = new PenStroke {
                    points = points
                };
                penStroke.startTime = startTime;
                penStroke.endTime   = endTime;

                penStrokes.Add(penStroke);
            }

            isHaveLastControlPoint = false;
            index           = 0;
            points          = new List <MyPoint>();
            IsHaveLastPoint = false;

            isPress = false;
        }
Beispiel #4
0
        /// <summary>
        /// Puts the stroke data into the XML file.
        /// </summary>
        private static void processStrokes(PenStrokes strokes, StreamWriter log, XmlTextWriter xml)
        {
            IEnumerator strokesEnum = strokes.GetEnumerator();

            // more user feedback
            form.appendLine("");

            while (strokesEnum.MoveNext())
            {
                PenStroke stroke = (PenStroke)strokesEnum.Current;

                // more user feedback
                form.appendText(".");

                //log.WriteLine("\tPen Stroke");
                //log.WriteLine("\t  Duration: " + stroke.Duration);

                long strokeTimeMillis       = ((long)stroke.StartSecond * 1000) + (long)stroke.StartMillisecond;
                long strokeTimeSystemMillis = ((long)stroke.SystemSecond * 1000) + (long)stroke.SystemMillisecond;

                xml.WriteStartElement("stroke");
                xml.WriteStartAttribute("begin");
                xml.WriteValue(strokeTimeMillis);
                xml.WriteStartAttribute("beginSystemTime");
                xml.WriteValue(strokeTimeSystemMillis);
                xml.WriteStartAttribute("duration");
                xml.WriteValue(stroke.Duration);
                xml.WriteStartAttribute("end");
                xml.WriteValue(strokeTimeMillis + stroke.Duration);
                xml.WriteStartAttribute("colorRGB");
                xml.WriteValue(getRGBString(stroke.Color));


                xml.WriteStartAttribute("minStrokeX");
                xml.WriteValue(stroke.Bounds.Left);
                xml.WriteStartAttribute("minStrokeY");
                xml.WriteValue(stroke.Bounds.Top);
                xml.WriteStartAttribute("maxStrokeX");
                xml.WriteValue(stroke.Bounds.Right);
                xml.WriteStartAttribute("maxStrokeY");
                xml.WriteValue(stroke.Bounds.Bottom);


                int     numSamples  = stroke.X.Length;
                float[] x           = stroke.X;
                float[] y           = stroke.Y;
                byte[]  f           = stroke.Force;
                int[]   deltaMillis = stroke.DeltaTime;

                long startTimeMillis = strokeTimeMillis;

                for (int j = 0; j < numSamples; j++)
                {
                    xml.WriteStartElement("p");
                    // x
                    xml.WriteStartAttribute("x");
                    xml.WriteValue(x[j]);
                    // y
                    xml.WriteStartAttribute("y");
                    xml.WriteValue(y[j]);
                    // f
                    xml.WriteStartAttribute("f");
                    xml.WriteValue(f[j]);
                    // t
                    // move the time counter by delta
                    startTimeMillis += deltaMillis[j];
                    xml.WriteStartAttribute("t");
                    xml.WriteValue(startTimeMillis);

                    xml.WriteEndElement();
                }
                xml.WriteEndElement();
            }
        }
Beispiel #5
0
        public void drawLine(int nPenStatus, int x, int y, int nCompress)
        {
            Point p = new Point(x, y);

            if (!pointIsInvalid(nPenStatus, p))
            {
                return;
            }

            if (nPenStatus == 0)
            {
                if (points.Count > 0)
                {
//                    Console.WriteLine(DateTime.Now.Ticks);
                    endTime = (DateTime.Now.Ticks - dtFrom.Ticks) / 10000;
                    var penStroke = new PenStroke {
                        points = points
                    };
                    penStroke.startTime = startTime;
                    penStroke.endTime   = endTime;
                    penStrokes.Add(penStroke);
                }

                isHaveLastControlPoint = false;
                index           = 0;
                points          = new List <MyPoint>();
                IsHaveLastPoint = false;
            }
            else
            {
                if (points.Count == 0)
                {
                    pathFigure = new PathFigure();
                    pathGeometry.Figures.Add(pathFigure);
                    pathFigure.StartPoint = p;
                    IsHaveLastPoint       = true;
                    startTime             = (DateTime.Now.Ticks - dtFrom.Ticks) / 10000;
                }

                double distance = 0;
                //if (points.Count>0)
                //{
                //    distance = Math.Sqrt((p.X - points[points.Count - 1].X) * (p.X - points[points.Count - 1].X) +
                //                         (p.Y - points[points.Count - 1].Y) * (p.Y - points[points.Count - 1].Y));

                //    Console.WriteLine("distance:" + distance);
                //}

                //if (distance > 1 || points.Count == 0)
                //{
                points.Add(new MyPoint {
                    Point = p, Pressure = nCompress
                });
//                    if (IsHaveLastPoint && points.Count > 2)
//                    {
//                        //                        var copyIndex = index;
//                        //                        this.Dispatcher.BeginInvoke(DispatcherPriority.Background,
//                        //                            new Action(() => {  }));
//                        stopwatch.Start();
//
//                        drawLine(points[points.Count - 3], points[points.Count - 2], points[points.Count-1]);
//                        stopwatch.Stop();
//                        Console.WriteLine("stopwatch.ElapsedMilliseconds:" + stopwatch.ElapsedMilliseconds);
//                       //                        DispatcherHelper.DoEvents();
//                       //LineGeometry lineGeometry = new LineGeometry(lastPoint, p);
//                       //
//                       //geometryGroup.Children.Add(lineGeometry);
//                       Console.WriteLine("{0},{1}|{2},{3}", lastPoint.X, lastPoint.Y, p.X, p.Y);
//                    }
                if (IsHaveLastPoint && points.Count > 1)
                {
                    //                        var copyIndex = index;
                    //                        this.Dispatcher.BeginInvoke(DispatcherPriority.Background,
                    //                            new Action(() => {  }));
                    stopwatch.Start();

                    drawLine(points[points.Count - 2].Point, points[points.Count - 1].Point);
                    stopwatch.Stop();
                    Console.WriteLine("stopwatch.ElapsedMilliseconds:" + stopwatch.ElapsedMilliseconds);
                    //                        DispatcherHelper.DoEvents();
                    //LineGeometry lineGeometry = new LineGeometry(lastPoint, p);
                    //
                    //geometryGroup.Children.Add(lineGeometry);
                    Console.WriteLine("{0},{1}|{2},{3}", lastPoint.X, lastPoint.Y, p.X, p.Y);
                }
                lastPoint = p;


                //}
            }
        }