private void AddMoodLayer(Graphics g, MoodDataSet mood, bool showDataPoints) { PointF bottomRight = new PointF(this.Width, this.Height); PointF bottomLeft = new PointF(0, this.Height); var color = mood.Mood.DisplayColor; Pen pen = new Pen(color, 2); var dataPoints = mood.DataPoints.Select(dp => DataPointToPoint(dp)).ToList(); var last = dataPoints[dataPoints.Count - 1]; GraphicsPath path = new GraphicsPath(); path.AddCurve(dataPoints.ToArray(), this.Tension); last.X = bottomRight.X; path.AddLine(last, bottomRight); path.AddLine(bottomRight, bottomLeft); path.AddLine(bottomLeft, dataPoints.First()); g.FillPath(new SolidBrush(color), path); if (ShowDataPoints) { var dpW = _dataPointWidth / 2; foreach (var dp in dataPoints) { g.FillEllipse(new SolidBrush(Color.Black), dp.X - dpW, dp.Y - dpW, _dataPointWidth, _dataPointWidth); } } }
private void AddSeperator(CGContext g, RectangleF frame, MoodDataSet mood) { var color = new CGColor(255, 255, 255); var dataPoints = GetPointsForSpline(mood.DataPoints, frame); var first = dataPoints.First(); CGLayer layer = CGLayer.Create(g, new SizeF(frame.Width, frame.Height)); layer.Context.SetStrokeColor(color); layer.Context.SetLineWidth(5f); layer.Context.MoveTo(first.X, first.Y); if (endsPrematurely) { dataPoints.RemoveAt(dataPoints.Count() - 1); } if (this.SmoothLines && dataPoints.Count() >= minDataPointsRequiredForSpline) { layer.Context.AddSpline(dataPoints.ToArray(), this.Tension); var last = dataPoints.Last(); layer.Context.AddLineToPoint(last.X, last.Y); } else { layer.Context.AddLines(dataPoints.ToArray()); } layer.Context.DrawPath(CGPathDrawingMode.Stroke); g.DrawLayer(layer, new PointF(0, 0)); }
private void AddSeperator(Graphics g, MoodDataSet mood) { Pen pen = new Pen(Color.White, 5); GraphicsPath path = new GraphicsPath(); var dataPoints = mood.DataPoints.Select(dp => DataPointToPoint(dp)).ToList(); path.AddCurve(dataPoints.ToArray(), this.Tension); g.DrawPath(pen, path); }
private void AddMoodLayer(CGContext g, RectangleF frame, MoodDataSet mood, bool showDataPoints) { PointF bottomRight = new PointF(frame.Width, frame.Height + 100); PointF bottomLeft = new PointF(0, frame.Height + 100); var color = mood.Mood.DisplayColor; var dataPoints = GetPointsForSpline(mood.DataPoints, frame); var last = dataPoints [dataPoints.Count - 1]; var first = dataPoints.First(); CGLayer layer = CGLayer.Create(g, new SizeF(frame.Width, frame.Height)); layer.Context.SetFillColor(color); layer.Context.SetStrokeColor(new CGColor(0, 0, 0)); layer.Context.MoveTo(bottomLeft.X, bottomLeft.Y); layer.Context.AddLineToPoint(first.X, first.Y); if (this.SmoothLines && dataPoints.Count() >= minDataPointsRequiredForSpline) { layer.Context.AddSpline(dataPoints.ToArray(), this.Tension); } else { layer.Context.AddLines(dataPoints.ToArray()); } layer.Context.AddLineToPoint(last.X, bottomRight.Y); layer.Context.AddLineToPoint(bottomLeft.X, bottomLeft.Y); layer.Context.DrawPath(CGPathDrawingMode.EOFill); g.DrawLayer(layer, new PointF(0, 0)); if (ShowDataPoints) { var dpW = _dataPointWidth / 2; g.SetFillColor(new CGColor(0, 0, 0)); foreach (var dp in dataPoints) { g.FillEllipseInRect(new RectangleF(dp.X - dpW, dp.Y - dpW, _dataPointWidth, _dataPointWidth)); } } }
public void AddSnapshot(DateTime timeStamp, IEnumerable <MoodMapItem> moods, bool endOnThis) { decimal cumulativePercentage = 0; foreach (var mood in moods) { var responseCount = mood.ResponseCount; decimal responsePercentage = mood.ResponsePercentage; var moodData = _moods.FirstOrDefault(m => m.Mood.Name.Equals(mood.Name, StringComparison.InvariantCultureIgnoreCase)); if (moodData == null) { moodData = new MoodDataSet() { Mood = new MoodItem() { DisplayColor = mood.DisplayColor, DisplayIndex = mood.DisplayIndex, MoodType = mood.MoodType, Name = mood.Name }, DataPoints = new List <DataPoint>() }; _moods.Add(moodData); } moodData.DataPoints.Add(new DataPoint() { TimeStamp = timeStamp, ResponseCount = responseCount, ResponsePercentage = responsePercentage, CumulativePercentage = cumulativePercentage }); if (endOnThis) { // endsPrematurely = true; // moodData.DataPoints.Add (new DataPoint () { TimeStamp = timeStamp, ResponseCount = 0, ResponsePercentage = 0, CumulativePercentage = 100 }); } cumulativePercentage += responsePercentage; } }