/// <summary> /// Rebuild a quadrilateral to help drawing the coordinate system. /// </summary> private void UpdateQuadImage(PointF a, PointF b) { PointF c = new PointF(a.X + (b.Y - a.Y), a.Y - (b.X - a.X)); PointF d = new PointF(c.X + (b.X - a.X), c.Y + (b.Y - a.Y)); quadImage = new QuadrilateralF(c, d, b, a); }
private void WriteCalibrationHelp(XmlTextWriter w) { bool line = random.NextBoolean(); Array values = Enum.GetValues(typeof(LengthUnit)); LengthUnit lengthUnit = (LengthUnit)values.GetValue(random.Next(values.Length)); w.WriteStartElement("Calibration"); if (line) { PointF origin = random.NextPointF(0, imageSize.Width, 0, imageSize.Height); float scale = (float)(random.NextDouble() * 50); w.WriteStartElement("CalibrationLine"); w.WriteElementString("Origin", XmlHelper.WritePointF(origin)); w.WriteElementString("Scale", string.Format(CultureInfo.InvariantCulture, "{0}", scale)); w.WriteEndElement(); } else { SizeF calibrationSize = random.NextSizeF(1, 100, 1, 100); QuadrilateralF quad = GetRandomQuadrilateral(); PointF origin = new PointF(0, calibrationSize.Height); w.WriteStartElement("CalibrationPlane"); w.WriteElementString("Size", XmlHelper.WriteSizeF(calibrationSize)); w.WriteStartElement("Quadrilateral"); w.WriteElementString("A", XmlHelper.WritePointF(quad.A)); w.WriteElementString("B", XmlHelper.WritePointF(quad.B)); w.WriteElementString("C", XmlHelper.WritePointF(quad.C)); w.WriteElementString("D", XmlHelper.WritePointF(quad.D)); w.WriteEndElement(); w.WriteElementString("Origin", XmlHelper.WritePointF(origin)); w.WriteEndElement(); } w.WriteStartElement("Unit"); w.WriteAttributeString("Abbreviation", UnitHelper.LengthAbbreviation(lengthUnit)); w.WriteString(lengthUnit.ToString()); w.WriteEndElement(); w.WriteEndElement(); }
private void WriteDrawingPlane(XmlTextWriter w, Guid id, long time) { QuadrilateralF quadImage = GetRandomQuadrilateral(); bool inPerspective = random.NextBoolean(); if (!inPerspective) { quadImage.C = new PointF(quadImage.B.X, quadImage.D.Y); quadImage.MakeRectangle(0); } w.WriteElementString("PointUpperLeft", XmlHelper.WritePointF(quadImage.A)); w.WriteElementString("PointUpperRight", XmlHelper.WritePointF(quadImage.B)); w.WriteElementString("PointLowerRight", XmlHelper.WritePointF(quadImage.C)); w.WriteElementString("PointLowerLeft", XmlHelper.WritePointF(quadImage.D)); w.WriteElementString("Perspective", inPerspective.ToString().ToLower()); w.WriteStartElement("DrawingStyle"); WriteDrawingStyleColor(w, "color"); WriteDrawingStyleGridDivisions(w, "divisions"); w.WriteEndElement(); WriteInfosFading(w); bool tracked = random.NextBoolean(); if (!tracked) { return; } List <string> pointKeys = new List <string>() { "0", "1", "2", "3" }; trackableDrawings.Add(new TrackableDrawing(id, time, pointKeys)); }