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 }); } }
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 }); } }
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; }
/// <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(); } }
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; //} } }