public override CAAnimation AnimationForSeries(TKChart chart, TKChartSeries series, TKChartSeriesRenderState state, CGRect rect) { double duration = 0.5; List <CAAnimation> animations = new List <CAAnimation> (); for (int i = 0; i < (int)state.Points.Count; i++) { string keyPath = string.Format("seriesRenderStates.{0}.points.{1}.y", series.Index, i); TKChartVisualPoint point = (TKChartVisualPoint)state.Points.ObjectAtIndex((uint)i); double oldY = rect.Height; double half = oldY + (point.Y - oldY) / 2.0; CAKeyFrameAnimation a = (CAKeyFrameAnimation)CAKeyFrameAnimation.GetFromKeyPath(keyPath); a.KeyTimes = new NSNumber[] { new NSNumber(0), new NSNumber(0), new NSNumber(1) }; a.Values = new NSObject[] { new NSNumber(oldY), new NSNumber(half), new NSNumber(point.Y) }; a.Duration = duration; a.TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseOut); animations.Add(a); } CAAnimationGroup group = new CAAnimationGroup(); group.Duration = duration; group.Animations = animations.ToArray(); return(group); }
public override void PointSelected (TKChart chart, TKChartData point, TKChartSeries series, nint index) { if (this.labelRender != null) { this.labelRender.SelectedSeries = (int)series.Index; this.labelRender.SelectedDataPoint = index; } }
public override void PointDeselected(TKChart chart, TKChartData point, TKChartSeries series, nint index) { if (this.labelRender != null) { this.labelRender.SelectedDataPoint = -1; } }
public void setStyles(TKChartSeries series) { TKChartPaletteItem item = series.Style.Palette.PaletteItemAtIndex(series.Index); if (series is TKChartColumnSeries && item.Drawables.Length > 1) { NSObject drawable = item.Drawables [2]; if (drawable is TKStroke) { TKStroke stroke = drawable as TKStroke; series.YAxis.Style.LineStroke = new TKStroke(stroke.Fill); } else { series.YAxis.Style.LineStroke = new TKStroke(item.Stroke.Fill); } } else { series.YAxis.Style.LineStroke = new TKStroke(item.Stroke.Fill); } series.YAxis.Style.MajorTickStyle.TicksFill = series.YAxis.Style.LineStroke.Fill; series.YAxis.Style.MajorTickStyle.MaxTickClippingMode = TKChartAxisClippingMode.Visible; series.YAxis.Style.MajorTickStyle.MinTickClippingMode = TKChartAxisClippingMode.Visible; if (series.YAxis.Style.MajorTickStyle.TicksFill is TKSolidFill) { TKSolidFill solidFill = series.YAxis.Style.MajorTickStyle.TicksFill as TKSolidFill; series.YAxis.Style.LabelStyle.TextColor = solidFill.Color; } }
public override void ViewDidLoad() { base.ViewDidLoad(); CGRect exampleBounds = this.ExampleBounds; CGRect overlayChartBounds = new CGRect(exampleBounds.X, exampleBounds.Y, exampleBounds.Width, exampleBounds.Height / 1.5f); CGRect indicatorsChartBounds = new CGRect(exampleBounds.X, overlayChartBounds.Height + 15, exampleBounds.Width, exampleBounds.Height / 3.0f); overlayChart = new TKChart(overlayChartBounds); overlayChart.GridStyle.VerticalLinesHidden = false; overlayChart.AutoresizingMask = ~UIViewAutoresizing.None; this.View.AddSubview(overlayChart); indicatorsChart = new TKChart(indicatorsChartBounds); indicatorsChart.AutoresizingMask = ~UIViewAutoresizing.None; this.View.AddSubview(indicatorsChart); data = StockDataPoint.LoadStockPoints(-1); settings = new IndicatorsTableView(this); SelectedIndicator = 0; SelectedTrendLine = 0; series = new TKChartCandlestickSeries(data.ToArray()); overlayChart.Delegate = new ChartDelegate(indicatorsChart); this.loadCharts(); }
public void setStyles(TKChartSeries series) { TKChartPaletteItem item = series.Style.Palette.PaletteItemAtIndex (series.Index); if (series is TKChartColumnSeries && item.Drawables.Length > 1) { NSObject drawable = item.Drawables [2]; if (drawable is TKStroke) { TKStroke stroke = drawable as TKStroke; series.YAxis.Style.LineStroke = new TKStroke (stroke.Fill); } else { series.YAxis.Style.LineStroke = new TKStroke (item.Stroke.Fill); } } else { series.YAxis.Style.LineStroke = new TKStroke(item.Stroke.Fill); } series.YAxis.Style.MajorTickStyle.TicksFill = series.YAxis.Style.LineStroke.Fill; series.YAxis.Style.MajorTickStyle.MaxTickClippingMode = TKChartAxisClippingMode.Visible; series.YAxis.Style.MajorTickStyle.MinTickClippingMode = TKChartAxisClippingMode.Visible; if (series.YAxis.Style.MajorTickStyle.TicksFill is TKSolidFill) { TKSolidFill solidFill = series.YAxis.Style.MajorTickStyle.TicksFill as TKSolidFill; series.YAxis.Style.LabelStyle.TextColor = solidFill.Color; } }
// >> chart-structure-animation-cs public override CAAnimation AnimationForSeries(TKChart chart, TKChartSeries series, TKChartSeriesRenderState state, CGRect rect) { var duration = 0.0; var animations = new List <CAAnimation> (); for (int i = 0; i < (int)state.Points.Count; i++) { var pointKeyPath = state.AnimationKeyPathForPointAtIndex((uint)i); var keyPath = pointKeyPath + ".x"; var point = state.Points.ObjectAtIndex((uint)i) as TKChartVisualPoint; var animation = new CABasicAnimation(); animation.KeyPath = keyPath; animation.Duration = (double)(r.Next(100)) / 100.0; animation.From = new NSNumber(0); animation.To = new NSNumber(point.X); animations.Add(animation); duration = Math.Max(animation.Duration, duration); } var group = new CAAnimationGroup(); group.Duration = duration; group.Animations = animations.ToArray(); return(group); }
public override CAAnimation AnimationForSeries(TKChart chart, TKChartSeries series, TKChartSeriesRenderState state, CGRect rect) { double duration = 0.5; List<CAAnimation> animations = new List<CAAnimation> (); for (int i = 0; i<(int)state.Points.Count; i++) { string keyPath = string.Format ("seriesRenderStates.{0}.points.{1}.y", series.Index, i); TKChartVisualPoint point = (TKChartVisualPoint)state.Points.ObjectAtIndex((uint)i); double oldY = rect.Height; double half = oldY + (point.Y - oldY)/2.0; CAKeyFrameAnimation a = (CAKeyFrameAnimation)CAKeyFrameAnimation.GetFromKeyPath(keyPath); a.KeyTimes = new NSNumber[] { new NSNumber (0), new NSNumber (0), new NSNumber (1) }; a.Values = new NSObject[] { new NSNumber (oldY), new NSNumber (half), new NSNumber (point.Y) }; a.Duration = duration; a.TimingFunction = CAMediaTimingFunction.FromName (CAMediaTimingFunction.EaseOut); animations.Add(a); } CAAnimationGroup group = new CAAnimationGroup (); group.Duration = duration; group.Animations = animations.ToArray(); return group; }
public override TKChartPaletteItem PaletteItemForSeries(TKChart chart, TKChartSeries series, nint index) { TKChartPaletteItem item = null; if (series.Index == 1) { UIColor[] colors = new UIColor[] { new UIColor(0f, 1f, 0f, 0.4f), new UIColor(1f, 0f, 0f, 0.4f), new UIColor(0f, 0f, 1f, 0.4f), }; TKLinearGradientFill gradient = new TKLinearGradientFill(colors, new PointF(0.5f, 0.0f), new PointF(0.5f, 1.0f)); item = new TKChartPaletteItem(gradient); } else { TKImageFill image = new TKImageFill(new UIImage("pattern1.png"), 5.0f); image.ResizingMode = TKImageFillResizingMode.Tile; TKStroke stroke = new TKStroke(UIColor.Black, 1.0f); stroke.CornerRadius = 5.0f; stroke.DashPattern = new NSNumber[] { new NSNumber(2), new NSNumber(2), new NSNumber(5), new NSNumber(2) }; item = new TKChartPaletteItem(new NSObject[] { image, stroke }); } return(item); }
public override CAAnimation AnimationForSeries(TKChart chart, TKChartSeries series, TKChartSeriesRenderState state, CGRect rect) { double duration = 0; List<CAAnimation> animations = new List<CAAnimation>(); for (int i = 0; i<(int)state.Points.Count; i++) { string pointKeyPath = state.AnimationKeyPathForPointAtIndex ((uint)i); string keyPath = string.Format("{0}.distanceFromCenter", pointKeyPath); CAKeyFrameAnimation a = CAKeyFrameAnimation.GetFromKeyPath(keyPath); a.Values = new NSNumber[] { new NSNumber(50), new NSNumber(50), new NSNumber(0) }; a.KeyTimes = new NSNumber[] { new NSNumber(0), new NSNumber(i/(i+1.0)), new NSNumber(1) }; a.Duration = 0.3 * (i+1.1); animations.Add(a); keyPath = string.Format("{0}.opacity", pointKeyPath); a = CAKeyFrameAnimation.GetFromKeyPath(keyPath); a.Values = new NSNumber[] { new NSNumber(0), new NSNumber(0), new NSNumber(1) }; a.KeyTimes = new NSNumber[] { new NSNumber(0), new NSNumber(i/(i+1.0)), new NSNumber(1) }; a.Duration = 0.3 * (i+1.1); animations.Add(a); duration = a.Duration; } CAAnimationGroup g = new CAAnimationGroup(); g.Duration = duration; g.Animations = animations.ToArray(); return g; }
public override CAAnimation AnimationForSeries(TKChart chart, TKChartSeries series, TKChartSeriesRenderState state, CGRect rect) { double duration = 0; List <CAAnimation> animations = new List <CAAnimation>(); for (int i = 0; i < (int)state.Points.Count; i++) { string pointKeyPath = state.AnimationKeyPathForPointAtIndex((uint)i); string keyPath = string.Format("{0}.distanceFromCenter", pointKeyPath); CAKeyFrameAnimation a = CAKeyFrameAnimation.GetFromKeyPath(keyPath); a.Values = new NSNumber[] { new NSNumber(50), new NSNumber(50), new NSNumber(0) }; a.KeyTimes = new NSNumber[] { new NSNumber(0), new NSNumber(i / (i + 1.0)), new NSNumber(1) }; a.Duration = 0.3 * (i + 1.1); animations.Add(a); keyPath = string.Format("{0}.opacity", pointKeyPath); a = CAKeyFrameAnimation.GetFromKeyPath(keyPath); a.Values = new NSNumber[] { new NSNumber(0), new NSNumber(0), new NSNumber(1) }; a.KeyTimes = new NSNumber[] { new NSNumber(0), new NSNumber(i / (i + 1.0)), new NSNumber(1) }; a.Duration = 0.3 * (i + 1.1); animations.Add(a); duration = a.Duration; } CAAnimationGroup g = new CAAnimationGroup(); g.Duration = duration; g.Animations = animations.ToArray(); return(g); }
public override void PointSelected(TKChart chart, TKChartData point, TKChartSeries series, nint index) { if (this.labelRender != null) { this.labelRender.SelectedSeries = (int)series.Index; this.labelRender.SelectedDataPoint = index; } }
public override CAAnimation AnimationForSeries(TKChart chart, TKChartSeries series, TKChartSeriesRenderState state, CGRect rect) { double duration = 0; List <CAAnimation> animations = new List <CAAnimation> (); for (int i = 0; i < (int)state.Points.Count; i++) { TKChartVisualPoint point = (TKChartVisualPoint)state.Points.ObjectAtIndex((uint)i); if (Grow) { string keyPath = string.Format("seriesRenderStates.{0}.points.{1}.x", series.Index, i); CABasicAnimation animation = (CABasicAnimation)CABasicAnimation.FromKeyPath(keyPath); animation.Duration = 0.1 * (i + 0.2); animation.From = new NSNumber(0); animation.To = new NSNumber(point.X); animation.TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseOut); animations.Add(animation); duration = animation.Duration; } else { string keyPath = string.Format("seriesRenderStates.{0}.points.{1}.y", series.Index, i); nfloat oldY = rect.Height; if (i > 0) { CAKeyFrameAnimation animation = (CAKeyFrameAnimation)CAKeyFrameAnimation.GetFromKeyPath(keyPath); animation.Duration = 0.1 * (i + 1); animation.Values = new NSNumber[] { new NSNumber(oldY), new NSNumber(oldY), new NSNumber(point.Y) }; animation.KeyTimes = new NSNumber[] { new NSNumber(0), new NSNumber(i / (i + 1.0)), new NSNumber(1) }; animation.TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseOut); animations.Add(animation); duration = animation.Duration; } else { CABasicAnimation animation = (CABasicAnimation)CABasicAnimation.FromKeyPath(keyPath); animation.From = new NSNumber(oldY); animation.To = new NSNumber(point.Y); animation.Duration = 0.1f; animations.Add(animation); } } } CAAnimationGroup group = new CAAnimationGroup(); group.Duration = duration; group.Animations = animations.ToArray(); return(group); }
public override TKChartPointLabel LabelForDataPoint (TKChart chart, TKChartData dataPoint, string propertyName, TKChartSeries series, nuint dataIndex) { TKChartDataPoint point = (TKChartDataPoint)dataPoint; if (series.Index == (nuint)this.selectedSeriesIndex && dataIndex == (nuint)this.selectedDataPointIndex) { return new MyPointLabel (point, series, String.Format ("{0}", point.DataYValue)); } return new TKChartPointLabel (point, series, String.Format ("{0}", point.DataYValue)); }
public override CAAnimation AnimationForSeries (TKChart chart, TKChartSeries series, TKChartSeriesRenderState state, CGRect rect) { double duration = 0; List<CAAnimation> animations = new List<CAAnimation> (); for (int i = 0; i<(int)state.Points.Count; i++) { TKChartVisualPoint point = (TKChartVisualPoint)state.Points.ObjectAtIndex ((uint)i); if (Grow) { string keyPath = string.Format ("seriesRenderStates.{0}.points.{1}.x", series.Index, i); CABasicAnimation animation = (CABasicAnimation)CABasicAnimation.FromKeyPath(keyPath); animation.Duration = 0.1 *(i + 0.2); animation.From = new NSNumber(0); animation.To = new NSNumber(point.X); animation.TimingFunction = CAMediaTimingFunction.FromName (CAMediaTimingFunction.EaseOut); animations.Add(animation); duration = animation.Duration; } else { string keyPath = string.Format ("seriesRenderStates.{0}.points.{1}.y", series.Index, i); nfloat oldY = rect.Height; if (i > 0) { CAKeyFrameAnimation animation = (CAKeyFrameAnimation)CAKeyFrameAnimation.GetFromKeyPath(keyPath); animation.Duration = 0.1* (i + 1); animation.Values = new NSNumber[] { new NSNumber(oldY), new NSNumber(oldY), new NSNumber(point.Y) }; animation.KeyTimes = new NSNumber[] { new NSNumber(0), new NSNumber(i/(i+1.0)), new NSNumber(1) }; animation.TimingFunction = CAMediaTimingFunction.FromName(CAMediaTimingFunction.EaseOut); animations.Add (animation); duration = animation.Duration; } else { CABasicAnimation animation = (CABasicAnimation)CABasicAnimation.FromKeyPath(keyPath); animation.From = new NSNumber(oldY); animation.To = new NSNumber(point.Y); animation.Duration = 0.1f; animations.Add(animation); } } } CAAnimationGroup group = new CAAnimationGroup (); group.Duration = duration; group.Animations = animations.ToArray(); return group; }
public override TKChartPointLabelRender PointLabelRenderForSeries (TKChart chart, TKChartSeries series, TKChartSeriesRender render) { if (this.labelRender == null) { labelRender = new MyPointLabelRender (render, this.selectedDataPointIndex, this.selectedSeriesIndex); } if (series.Index == 0) { return this.labelRender; } return null; }
public override TKChartPaletteItem PaletteItemForPoint(TKChart chart, nuint index, TKChartSeries series) { if (series.Index == (nuint)this.selectedSeriesIndex && index == (nuint)this.selectedDataPointIndex) { return new TKChartPaletteItem (new TKStroke (UIColor.Black, (float)2.0), new TKSolidFill (UIColor.White)); } if (series.Index == 0) { return new TKChartPaletteItem (new TKSolidFill (new UIColor ((float)(108 / 255.0), (float)(181 / 255.0), (float)(250 / 255.0), (float)1.0))); } return new TKChartPaletteItem (new TKSolidFill (new UIColor ((float)(241 / 255.0), (float)(140 / 255.0), (float)(133 / 255.0), (float)1.0))); }
public override void RenderPointLabels(TKChartSeries series, CGRect bounds, CGContext ctx) { if (labelLayer != null) { labelLayer.RemoveFromSuperLayer(); } for (int i = 0; i < series.Items.Length; i++) { TKChartData dataPoint = (TKChartData)series.Items [i]; CGPoint location = base.LocationForDataPoint(dataPoint, series, bounds); if (!bounds.Contains(location)) { continue; } TKChartPointLabel label = this.LabelForDataPoint(dataPoint, series, (uint)i); CGRect labelRect; TKChartPointLabelStyle labelStyle = series.Style.PointLabelStyle; if (this.isSelectedPoint) { labelRect = new CGRect((float)(location.X - 17.5), (float)(location.Y - 10 - 2.5 * Math.Abs(labelStyle.LabelOffset.Vertical)), 35, 30); if (labelRect.Y < bounds.Y) { this.labelLayer.IsOutsideBounds = true; labelRect.Y = (float)(location.Y + 10 + 2.5 * Math.Abs(labelStyle.LabelOffset.Vertical) - labelRect.Size.Height); } else { this.labelLayer.IsOutsideBounds = false; } this.labelLayer.Frame = labelRect; this.Render.AddSublayer(this.labelLayer); this.labelLayer.SetNeedsDisplay(); } else { CGSize labelSize = label.SizeThatFits(bounds.Size); labelRect = new CGRect((float)(location.X - labelSize.Width / 2.0 + labelStyle.LabelOffset.Horizontal), (float)(location.Y - labelSize.Height / 2.0 + labelStyle.LabelOffset.Vertical), labelSize.Width, labelSize.Height); if (labelRect.Y < this.Render.Bounds.Y) { labelRect.Y = (float)(location.Y - labelSize.Height / 2.0 + Math.Abs(labelStyle.LabelOffset.Vertical)); } label.DrawInContext(ctx, labelRect, new TKChartVisualPoint(new PointF(0, 0)), UIColor.White); } } }
void snippet17() { TKChartSeries series = null; // >> chart-drawing-pallete-items-cs var paletteItem1 = new TKChartPaletteItem(new TKSolidFill(UIColor.Red)); var paletteItem2 = new TKChartPaletteItem(new TKStroke(UIColor.Blue)); var plaetteItem3 = new TKChartPaletteItem(new TKStroke(UIColor.Blue), new TKSolidFill(UIColor.Red)); series.Style.Palette.AddPaletteItem(paletteItem1); // << chart-drawing-pallete-items-cs Console.WriteLine(paletteItem2); Console.WriteLine(plaetteItem3); }
void ReloadChart() { chart.RemoveAllData(); TKChartSeries series = null; if (this.SelectedOption == 0) { series = new TKChartCandlestickSeries(points.ToArray()); } else { series = new TKChartOhlcSeries(points.ToArray()); } series.Selection = TKChartSeriesSelection.DataPoint; TKChartNumericAxis yAxis = new TKChartNumericAxis(new NSNumber(300), new NSNumber(380)); yAxis.MajorTickInterval = 20; chart.YAxis = yAxis; chart.AddSeries(series); TKChartDateTimeAxis xAxis = (TKChartDateTimeAxis)chart.XAxis; xAxis.MinorTickIntervalUnit = TKChartDateTimeAxisIntervalUnit.Days; xAxis.Style.MajorTickStyle.TicksOffset = -3; xAxis.Style.MajorTickStyle.TicksHidden = false; xAxis.Style.MajorTickStyle.TicksWidth = 1.5f; xAxis.Style.MajorTickStyle.TicksFill = new TKSolidFill(UIColor.FromRGB(203, 203, 203)); xAxis.Style.MajorTickStyle.MaxTickClippingMode = TKChartAxisClippingMode.Visible; // >> chart-zoom-cs xAxis.AllowZoom = true; yAxis.AllowZoom = true; // << chart-zoom-cs // >> chart-pan-cs xAxis.AllowPan = true; yAxis.AllowPan = true; // << chart-pan-cs yAxis.Style.LabelStyle.TextAlignment = TKChartAxisLabelAlignment.Bottom | TKChartAxisLabelAlignment.Right; chart.ReloadData(); }
public override TKChartPointLabel LabelForDataPoint (TKChartData dataPoint, TKChartSeries series, nuint dataIndex) { TKChartDataPoint point = (TKChartDataPoint)dataPoint; if (series.Index == (nuint)this.SelectedSeries && dataIndex == (nuint)this.SelectedDataPoint) { if (this.labelLayer == null) { this.labelLayer = new SelectedPointLabel (); } this.labelLayer.LabelStyle = series.Style.PointLabelStyle; this.labelLayer.Text = String.Format ("{0}", point.DataYValue); this.isSelectedPoint = true; return null; } this.isSelectedPoint = false; return new TKChartPointLabel (dataPoint, series, String.Format ("{0}", point.DataYValue)); }
private TKChartPointLabel CreateHorizontalLabel(TKChartSeries series, TKChartDataPoint dataPoint) { series.Style.PointShape = new TKPredefinedShape(TKShapeType.Circle, new System.Drawing.SizeF(8, 8)); series.Style.PointLabelStyle.TextHidden = false; series.Style.PointLabelStyle.LabelOffset = new UIOffset(0, -24); series.Style.PointLabelStyle.Insets = new UIEdgeInsets(-1, -5, -1, -5); series.Style.PointLabelStyle.LayoutMode = TKChartPointLabelLayoutMode.Manual; series.Style.PointLabelStyle.Font = UIFont.SystemFontOfSize(10); series.Style.PointLabelStyle.TextAlignment = UITextAlignment.Center; series.Style.PointLabelStyle.Fill = new TKSolidFill(new UIColor((float)(108 / 255.0), (float)(181 / 255.0), (float)(250 / 255.0), (float)1.0)); series.Style.PointLabelStyle.ClipMode = TKChartPointLabelClipMode.Hidden; series.Style.PointLabelStyle.TextOrientation = TKChartPointLabelOrientation.Horizontal; series.Style.PointLabelStyle.TextColor = UIColor.Red; series.Style.ShapeMode = TKChartSeriesStyleShapeMode.AlwaysShow; return(new TKChartPointLabel(dataPoint, series, $"{dataPoint.DataName}, {dataPoint.DataYValue}")); }
// >> chart-ohlc-visual-cs public override TKChartPaletteItem PaletteItemForSeries(TKChart chart, TKChartSeries series, nint index) { var dataPoint = series.DataPointAtIndex((uint)index); TKStroke stroke = null; if (dataPoint.Close.DoubleValue < dataPoint.Open.DoubleValue) { stroke = new TKStroke(UIColor.Red); } else { stroke = new TKStroke(UIColor.Green); } var paletteItem = new TKChartPaletteItem(stroke); return(paletteItem); }
void snippet15() { // >> chart-drawing-pallete-cs TKChartSeries series = null; series.Style.Palette = new TKChartPalette(); // << chart-drawing-pallete-cs // >> chart-drawing-pallete-mode-index-cs series.Style.PaletteMode = TKChartSeriesStylePaletteMode.UseItemIndex; // << chart-drawing-pallete-mode-index-cs // >> chart-drawing-pallete-mode-series-cs series.Style.PaletteMode = TKChartSeriesStylePaletteMode.UseSeriesIndex; // << chart-drawing-pallete-mode-series-cs series.Style.PaletteMode = TKChartSeriesStylePaletteMode.UseItemIndex; }
// >> chart-candlestick-visual-cs public override TKChartPaletteItem PaletteItemForSeries(TKChart chart, TKChartSeries series, nint index) { var dataPoint = series.DataPointAtIndex((uint)index); var stroke = new TKStroke(UIColor.Black); var fill = new TKSolidFill(); if (dataPoint.Close.DoubleValue < dataPoint.Open.DoubleValue) { fill.Color = UIColor.Red; } else { fill.Color = UIColor.Green; } var paletteItem = new TKChartPaletteItem(stroke, fill); return(paletteItem); }
public override TKChartSeries GetSeries(TKChart chart, nuint index) { TKChartSeries series = null; if (index == 2) { series = new TKChartSplineSeries(); } else { series = new TKChartLineSeries(); } series.SelectionMode = TKChartSeriesSelectionMode.Series; series.Style.PointShape = new TKPredefinedShape(TKShapeType.Circle, new System.Drawing.SizeF(10, 10)); series.Title = string.Format("Series: {0}", index + 1); return(series); }
private TKChartPointLabel CreateVerticalLabel(TKChartSeries series, TKChartDataPoint dataPoint) { series.Style.ShapeMode = TKChartSeriesStyleShapeMode.AlwaysShow; series.Style.PointLabelStyle.LayoutMode = TKChartPointLabelLayoutMode.Manual; series.Style.PointLabelStyle.Fill = new TKSolidFill(UIColor.White); series.Style.PointLabelStyle.Insets = new UIEdgeInsets(-1, -3, -1, -3); // Position the label at your preferred position series.Style.PointLabelStyle.LabelOffset = new UIOffset(0, 200); // Set the text properties series.Style.PointLabelStyle.TextOrientation = TKChartPointLabelOrientation.Vertical; series.Style.PointLabelStyle.TextAlignment = UITextAlignment.Center; series.Style.PointLabelStyle.TextColor = UIColor.Blue; series.Style.PointLabelStyle.TextHidden = false; return(new TKChartPointLabel(dataPoint, series, dataPoint.DataYValue.ToString())); }
public override TKChartPointLabel LabelForDataPoint(TKChartData dataPoint, TKChartSeries series, nuint dataIndex) { TKChartDataPoint point = (TKChartDataPoint)dataPoint; if (series.Index == (nuint)this.SelectedSeries && dataIndex == (nuint)this.SelectedDataPoint) { if (this.labelLayer == null) { this.labelLayer = new SelectedPointLabel(); } this.labelLayer.LabelStyle = series.Style.PointLabelStyle; this.labelLayer.Text = String.Format("{0}", point.DataYValue); this.isSelectedPoint = true; return(null); } this.isSelectedPoint = false; return(new TKChartPointLabel(dataPoint, series, String.Format("{0}", point.DataYValue))); }
public override void RenderPointLabels (TKChartSeries series, CGRect bounds, CGContext ctx) { if (labelLayer != null) { labelLayer.RemoveFromSuperLayer (); } for (int i = 0; i < series.Items.Length; i++) { TKChartData dataPoint = (TKChartData)series.Items [i]; CGPoint location = base.LocationForDataPoint (dataPoint, series, bounds); if (!bounds.Contains(location)) { continue; } TKChartPointLabel label = this.LabelForDataPoint (dataPoint, series, (uint)i); CGRect labelRect; TKChartPointLabelStyle labelStyle = series.Style.PointLabelStyle; if (this.isSelectedPoint) { labelRect = new CGRect ((float)(location.X - 17.5), (float)(location.Y - 10 - 2.5 * Math.Abs (labelStyle.LabelOffset.Vertical)), 35, 30); if (labelRect.Y < bounds.Y) { this.labelLayer.IsOutsideBounds = true; labelRect.Y = (float)(location.Y + 10 + 2.5 * Math.Abs (labelStyle.LabelOffset.Vertical) - labelRect.Size.Height); } else { this.labelLayer.IsOutsideBounds = false; } this.labelLayer.Frame = labelRect; this.Render.AddSublayer (this.labelLayer); this.labelLayer.SetNeedsDisplay (); } else { CGSize labelSize = label.SizeThatFits (bounds.Size); labelRect = new CGRect ((float)(location.X - labelSize.Width / 2.0 + labelStyle.LabelOffset.Horizontal), (float)(location.Y - labelSize.Height / 2.0 + labelStyle.LabelOffset.Vertical), labelSize.Width, labelSize.Height); if (labelRect.Y < this.Render.Bounds.Y) { labelRect.Y = (float)(location.Y - labelSize.Height / 2.0 + Math.Abs (labelStyle.LabelOffset.Vertical)); } label.DrawInContext (ctx, labelRect, new TKChartVisualPoint(new PointF(0, 0)), UIColor.White); } } }
void snippet18() { TKChartSeries series = null; // >> chart-drawing-pallete-items-arrays-cs series.Style.Palette = new TKChartPalette(); var redFill = new TKSolidFill(UIColor.Red, 2.0f); var stroke1 = new TKStroke(UIColor.Yellow, 1.0f); stroke1.CornerRadius = 2.0f; stroke1.Insets = new UIEdgeInsets(1, 1, 1, 1); var stroke2 = new TKStroke(UIColor.Black, 1.0f); stroke2.CornerRadius = 2.0f; series.Style.Palette.AddPaletteItem(new TKChartPaletteItem(new TKDrawing[] { redFill, stroke1, stroke2 })); // << chart-drawing-pallete-items-arrays-cs // >> chart-drawing-pallete-point-cs series.Style.PointShape = new TKPredefinedShape(TKShapeType.Rhombus, new CGSize(15, 15)); // << chart-drawing-pallete-point-cs }
public void ReloadChart() { chart.RemoveAllData(); Random r = new Random(); for (int i = 0; i < 3; i++) { List <TKChartDataPoint> list = new List <TKChartDataPoint> (); for (int j = 0; j < 8; j++) { list.Add(new TKChartDataPoint(new NSNumber(j + 1), new NSNumber(r.Next() % 100))); } TKChartSeries series = null; switch (this.SelectedOption) { case 0: series = new TKChartLineSeries(list.ToArray()); break; case 1: series = new TKChartSplineSeries(list.ToArray()); break; case 2: series = new TKChartAreaSeries(list.ToArray()); break; case 3: series = new TKChartSplineAreaSeries(list.ToArray()); break; } chart.AddSeries(series); // >> chart-selection-cs series.Selection = TKChartSeriesSelection.Series; // << chart-selection-cs } }
public override void ViewDidLoad() { base.ViewDidLoad(); TKChart chart = new TKChart(this.ExampleBounds); chart.AutoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight; this.View.AddSubview(chart); Random r = new Random(); List <CustomObject> data = new List <CustomObject> (); for (int i = 0; i < 5; i++) { CustomObject obj = new CustomObject() { ObjectID = i, Value1 = r.Next(100), Value2 = r.Next(100), Value3 = r.Next(100) }; data.Add(obj); } chart.AddSeries(new TKChartAreaSeries(data.ToArray(), "ObjectID", "Value1")); chart.AddSeries(new TKChartAreaSeries(data.ToArray(), "ObjectID", "Value2")); chart.AddSeries(new TKChartAreaSeries(data.ToArray(), "ObjectID", "Value3")); TKChartStackInfo stackInfo = new TKChartStackInfo(new NSNumber(1), TKChartStackMode.Stack); for (int i = 0; i < chart.Series.Length; i++) { TKChartSeries series = chart.Series [i]; series.SelectionMode = TKChartSeriesSelectionMode.Series; series.StackInfo = stackInfo; } chart.ReloadData(); }
public override CAAnimation AnimationForSeries(TKChart chart, TKChartSeries series, TKChartSeriesRenderState state, CGRect rect) { var duration = 0.0; var animations = new List <CAAnimation>(); for (int i = 0; i < (int)state.Points.Count; i++) { var pointKeyPath = state.AnimationKeyPathForPointAtIndex((uint)i); var keyPath = pointKeyPath + ".y"; var point = state.Points.ObjectAtIndex((uint)i) as TKChartVisualPoint; var oldY = rect.Size.Height; if (i > 0) { var animation = new CAKeyFrameAnimation(); animation.KeyPath = keyPath; animation.Duration = (double)(0.1 * i); animation.Values = new NSNumber[] { new NSNumber(oldY), new NSNumber(oldY), new NSNumber(point.Y) }; animation.KeyTimes = new NSNumber[] { new NSNumber(0), new NSNumber(i / (i + 1.0)), new NSNumber(1.0) }; animations.Add(animation); duration = animation.Duration; } else { var animation = new CABasicAnimation(); animation.KeyPath = keyPath; animation.From = new NSNumber(oldY); animation.To = new NSNumber(point.Y); animation.Duration = 0.1; animations.Add(animation); } } var group = new CAAnimationGroup(); group.Duration = duration; group.Animations = animations.ToArray(); return(group); }
public void reloadChart(object sender, EventArgs e) { chart.RemoveAllData(); Random r = new Random(); for (int i = 0; i < 3; i++) { List <TKChartDataPoint> list = new List <TKChartDataPoint> (); for (int j = 0; j < 8; j++) { list.Add(new TKChartDataPoint(new NSNumber(j + 1), new NSNumber(r.Next() % 100))); } TKChartSeries series = null; switch (this.SelectedOption) { case 0: series = new TKChartLineSeries(list.ToArray()); break; case 1: series = new TKChartSplineSeries(list.ToArray()); break; case 2: series = new TKChartAreaSeries(list.ToArray()); break; case 3: series = new TKChartSplineAreaSeries(list.ToArray()); break; } series.SelectionMode = TKChartSeriesSelectionMode.Series; chart.AddSeries(series); } }
public override TKChartPaletteItem PaletteItemForSeries(TKChart chart, TKChartSeries series, nint index) { TKChartPaletteItem item = null; if (series.Index == 1) { UIColor[] colors = new UIColor[] { new UIColor(0f, 1f, 0f, 0.4f), new UIColor(1f, 0f, 0f, 0.4f), new UIColor(0f, 0f, 1f, 0.4f), }; TKLinearGradientFill gradient = new TKLinearGradientFill(colors, new PointF (0.5f, 0.0f), new PointF (0.5f, 1.0f)); item = new TKChartPaletteItem (gradient); } else { TKImageFill image = new TKImageFill(new UIImage ("pattern1.png"), 5.0f); image.ResizingMode = TKImageFillResizingMode.Tile; TKStroke stroke = new TKStroke (UIColor.Black, 1.0f); stroke.CornerRadius = 5.0f; stroke.DashPattern = new NSNumber[] { new NSNumber(2), new NSNumber(2), new NSNumber(5), new NSNumber(2) }; item = new TKChartPaletteItem (new NSObject[] { image, stroke }); } return item; }
public MyPointLabel(TKChartData dataPoint, TKChartSeries series, string text) : base(dataPoint, series, text) { }
public override void ViewDidLoad() { this.AddOption("Simple moving average", "Trendlines", () => AddTrendline(new TKChartSimpleMovingAverageIndicator(this.series))); this.AddOption("Exponential moving average", "Trendlines", () => AddTrendline(new TKChartExponentialMovingAverageIndicator(this.series))); this.AddOption("Weighted moving average", "Trendlines", () => AddTrendline(new TKChartWeightedMovingAverageIndicator(this.series))); this.AddOption("Triangular moving average", "Trendlines", () => AddTrendline(new TKChartTriangularMovingAverageIndicator(this.series))); this.AddOption("Bollinger bands indicator", "Trendlines", () => AddTrendline(new TKChartBollingerBandIndicator(this.series))); this.AddOption("Moving average envelopes", "Trendlines", () => AddTrendline(new TKChartMovingAverageEnvelopesIndicator(this.series))); this.AddOption("Typical price", "Trendlines", () => AddTrendline(new TKChartTypicalPriceIndicator(this.series))); this.AddOption("Weighted close", "Trendlines", () => AddTrendline(new TKChartWeightedCloseIndicator(this.series))); this.AddOption("Median price", "Trendlines", () => AddTrendline(new TKChartMedianPriceIndicator(this.series))); this.AddOption("Modified moving average", "Trendlines", () => AddTrendline(new TKChartModifiedMovingAverageIndicator(this.series))); this.AddOption("Adaptive moving average", "Trendlines", () => AddTrendline(new TKChartAdaptiveMovingAverageIndicator(this.series))); this.AddOption("Percentage volume oscillator", "Indicators", () => AddIndicator(new TKChartPercentageVolumeOscillator(this.series))); this.AddOption("Percentage price oscillator", "Indicators", () => AddIndicator(new TKChartPercentagePriceOscillator(this.series))); this.AddOption("Absolute volume oscillator", "Indicators", () => AddIndicator(new TKChartAbsoluteVolumeOscillator(this.series))); this.AddOption("MACD indicator", "Indicators", () => AddIndicator(new TKChartMACDIndicator(this.series))); this.AddOption("RSI", "Indicators", () => AddIndicator(new TKChartRelativeStrengthIndex(this.series))); this.AddOption("Accumulation distribution line", "Indicators", () => AddIndicator(new TKChartAccumulationDistributionLine(this.series))); this.AddOption("True range", "Indicators", () => AddIndicator(new TKChartTrueRangeIndicator(this.series))); this.AddOption("Average true range", "Indicators", () => AddIndicator(new TKChartAverageTrueRangeIndicator(this.series))); this.AddOption("Commodity channel index", "Indicators", () => AddIndicator(new TKChartCommodityChannelIndex(this.series))); this.AddOption("Fast stochastic indicator", "Indicators", () => AddIndicator(new TKChartFastStochasticIndicator(this.series))); this.AddOption("Slow stochastic indicator", "Indicators", () => AddIndicator(new TKChartSlowStochasticIndicator(this.series))); this.AddOption("Rate of change", "Indicators", () => AddIndicator(new TKChartRateOfChangeIndicator(this.series))); this.AddOption("TRIX", "Indicators", () => AddIndicator(new TKChartTRIXIndicator(this.series))); this.AddOption("Williams percent", "Indicators", () => AddIndicator(new TKChartWilliamsPercentIndicator(this.series))); this.AddOption("Ease of movement", "Indicators", () => AddIndicator(new TKChartEaseOfMovementIndicator(this.series))); this.AddOption("Detrended price oscillator", "Indicators", () => AddIndicator(new TKChartDetrendedPriceOscillator(this.series))); this.AddOption("Force index", "Indicators", () => AddIndicator(new TKChartForceIndexIndicator(this.series))); this.AddOption("Rapid adaptive variance", "Indicators", () => AddIndicator(new TKChartRapidAdaptiveVarianceIndicator(this.series))); this.AddOption("Standard deviation", "Indicators", () => AddIndicator(new TKChartStandardDeviationIndicator(this.series))); this.AddOption("Relative momentum index", "Indicators", () => AddIndicator(new TKChartRelativeMomentumIndex(this.series))); this.AddOption("On balance volume", "Indicators", () => AddIndicator(new TKChartOnBalanceVolumeIndicator(this.series))); this.AddOption("Price volume trend", "Indicators", () => AddIndicator(new TKChartPriceVolumeTrendIndicator(this.series))); this.AddOption("Positive volume index", "Indicators", () => AddIndicator(new TKChartPositiveVolumeIndexIndicator(this.series))); this.AddOption("Negative volume index", "Indicators", () => AddIndicator(new TKChartNegativeVolumeIndexIndicator(this.series))); this.AddOption("Money flow index", "Indicators", () => AddIndicator(new TKChartMoneyFlowIndexIndicator(this.series))); this.AddOption("Ultimate oscillator", "Indicators", () => AddIndicator(new TKChartUltimateOscillator(this.series))); this.AddOption("Full stochastic indicator", "Indicators", () => AddIndicator(new TKChartFullStochasticIndicator(this.series))); this.AddOption("Market facilitation index", "Indicators", () => AddIndicator(new TKChartMarketFacilitationIndex(this.series))); this.AddOption("Chaikin oscillator", "Indicators", () => AddIndicator(new TKChartChaikinOscillator(this.series))); base.ViewDidLoad(); CGRect exampleBounds = this.View.Bounds; CGRect overlayChartBounds = new CGRect(exampleBounds.X, exampleBounds.Y, exampleBounds.Width, exampleBounds.Height / 1.5f); nfloat indicatorsOffset = exampleBounds.Y + overlayChartBounds.Height + 15; CGRect indicatorsChartBounds = new CGRect(exampleBounds.X, indicatorsOffset, exampleBounds.Width, exampleBounds.Height - indicatorsOffset); overlayChart = new TKChart(overlayChartBounds); overlayChart.GridStyle.VerticalLinesHidden = false; overlayChart.AutoresizingMask = ~UIViewAutoresizing.None; this.View.AddSubview(overlayChart); indicatorsChart = new TKChart(indicatorsChartBounds); indicatorsChart.AutoresizingMask = ~UIViewAutoresizing.None; this.View.AddSubview(indicatorsChart); data = StockDataPoint.LoadStockPoints(-1); series = new TKChartCandlestickSeries(data.ToArray()); this.loadCharts(); }
public override void ViewDidLoad() { base.ViewDidLoad (); CGRect exampleBounds = this.ExampleBounds; CGRect overlayChartBounds = new CGRect (exampleBounds.X, exampleBounds.Y, exampleBounds.Width, exampleBounds.Height/1.5f); CGRect indicatorsChartBounds = new CGRect (exampleBounds.X, overlayChartBounds.Height + 15, exampleBounds.Width, exampleBounds.Height / 3.0f); overlayChart = new TKChart (overlayChartBounds); overlayChart.GridStyle.VerticalLinesHidden = false; overlayChart.AutoresizingMask = ~UIViewAutoresizing.None; this.View.AddSubview (overlayChart); indicatorsChart = new TKChart (indicatorsChartBounds); indicatorsChart.AutoresizingMask = ~UIViewAutoresizing.None; this.View.AddSubview (indicatorsChart); data = StockDataPoint.LoadStockPoints(-1); settings = new IndicatorsTableView (this); SelectedIndicator = 0; SelectedTrendLine = 0; series = new TKChartCandlestickSeries (data.ToArray ()); overlayChart.Delegate = new ChartDelegate (indicatorsChart); this.loadCharts (); }
public override string TextForLabelAtPoint(TKChart chart, TKChartData dataPoint, TKChartSeries series, nuint dataIndex) { if (series is TKChartPieSeries) { TKChartDataPoint point = (TKChartDataPoint)dataPoint; return point.DataName; } else if (series is TKChartBarSeries) { TKChartDataPoint point = (TKChartDataPoint)dataPoint; return String.Format ("{0}", point.DataXValue); } else if (series is TKChartOhlcSeries) { TKChartFinancialDataPoint point = (TKChartFinancialDataPoint)dataPoint; return String.Format ("O:{0}\nH:{1}\nL:{2}\nC:{3}", point.Open, point.High, point.Low, point.Close); } return String.Format ("{0}", ((TKChartDataPoint)dataPoint).DataYValue); }
public override void ViewDidLoad () { this.AddOption ("Simple moving average", "Trendlines", () => AddTrendline (new TKChartSimpleMovingAverageIndicator (this.series))); this.AddOption ("Exponential moving average", "Trendlines", () => AddTrendline (new TKChartExponentialMovingAverageIndicator(this.series))); this.AddOption ("Weighted moving average", "Trendlines", () => AddTrendline (new TKChartWeightedMovingAverageIndicator(this.series))); this.AddOption ("Triangular moving average", "Trendlines", () => AddTrendline (new TKChartTriangularMovingAverageIndicator(this.series))); this.AddOption ("Bollinger bands indicator", "Trendlines", () => AddTrendline (new TKChartBollingerBandIndicator(this.series))); this.AddOption ("Moving average envelopes", "Trendlines", () => AddTrendline (new TKChartMovingAverageEnvelopesIndicator(this.series))); this.AddOption ("Typical price", "Trendlines", () => AddTrendline (new TKChartTypicalPriceIndicator(this.series))); this.AddOption ("Weighted close", "Trendlines", () => AddTrendline (new TKChartWeightedCloseIndicator(this.series))); this.AddOption ("Median price", "Trendlines", () => AddTrendline (new TKChartMedianPriceIndicator(this.series))); this.AddOption ("Modified moving average", "Trendlines", () => AddTrendline (new TKChartModifiedMovingAverageIndicator(this.series))); this.AddOption ("Adaptive moving average", "Trendlines", () => AddTrendline (new TKChartAdaptiveMovingAverageIndicator(this.series))); this.AddOption ("Percentage volume oscillator", "Indicators", () => AddIndicator (new TKChartPercentageVolumeOscillator (this.series))); this.AddOption ("Percentage price oscillator", "Indicators", () => AddIndicator (new TKChartPercentagePriceOscillator(this.series))); this.AddOption ("Absolute volume oscillator", "Indicators", () => AddIndicator (new TKChartAbsoluteVolumeOscillator(this.series))); this.AddOption ("MACD indicator", "Indicators", () => AddIndicator (new TKChartMACDIndicator(this.series))); this.AddOption ("RSI", "Indicators", () => AddIndicator (new TKChartRelativeStrengthIndex(this.series))); this.AddOption ("Accumulation distribution line", "Indicators", () => AddIndicator (new TKChartAccumulationDistributionLine(this.series))); this.AddOption ("True range", "Indicators", () => AddIndicator (new TKChartTrueRangeIndicator(this.series))); this.AddOption ("Average true range", "Indicators", () => AddIndicator (new TKChartAverageTrueRangeIndicator(this.series))); this.AddOption ("Commodity channel index", "Indicators", () => AddIndicator (new TKChartCommodityChannelIndex(this.series))); this.AddOption ("Fast stochastic indicator", "Indicators", () => AddIndicator (new TKChartFastStochasticIndicator(this.series))); this.AddOption ("Slow stochastic indicator", "Indicators", () => AddIndicator (new TKChartSlowStochasticIndicator(this.series))); this.AddOption ("Rate of change", "Indicators", () => AddIndicator (new TKChartRateOfChangeIndicator(this.series))); this.AddOption ("TRIX", "Indicators", () => AddIndicator (new TKChartTRIXIndicator(this.series))); this.AddOption ("Williams percent", "Indicators", () => AddIndicator (new TKChartWilliamsPercentIndicator(this.series))); this.AddOption ("Ease of movement", "Indicators", () => AddIndicator (new TKChartEaseOfMovementIndicator(this.series))); this.AddOption ("Detrended price oscillator", "Indicators", () => AddIndicator (new TKChartDetrendedPriceOscillator(this.series))); this.AddOption ("Force index", "Indicators", () => AddIndicator (new TKChartForceIndexIndicator(this.series))); this.AddOption ("Rapid adaptive variance", "Indicators", () => AddIndicator (new TKChartRapidAdaptiveVarianceIndicator(this.series))); this.AddOption ("Standard deviation", "Indicators", () => AddIndicator (new TKChartStandardDeviationIndicator(this.series))); this.AddOption ("Relative momentum index", "Indicators", () => AddIndicator (new TKChartRelativeMomentumIndex(this.series))); this.AddOption ("On balance volume", "Indicators", () => AddIndicator (new TKChartOnBalanceVolumeIndicator(this.series))); this.AddOption ("Price volume trend", "Indicators", () => AddIndicator (new TKChartPriceVolumeTrendIndicator(this.series))); this.AddOption ("Positive volume index", "Indicators", () => AddIndicator (new TKChartPositiveVolumeIndexIndicator(this.series))); this.AddOption ("Negative volume index", "Indicators", () => AddIndicator (new TKChartNegativeVolumeIndexIndicator(this.series))); this.AddOption ("Money flow index", "Indicators", () => AddIndicator (new TKChartMoneyFlowIndexIndicator(this.series))); this.AddOption ("Ultimate oscillator", "Indicators", () => AddIndicator (new TKChartUltimateOscillator(this.series))); this.AddOption ("Full stochastic indicator", "Indicators", () => AddIndicator (new TKChartFullStochasticIndicator(this.series))); this.AddOption ("Market facilitation index", "Indicators", () => AddIndicator (new TKChartMarketFacilitationIndex(this.series))); this.AddOption ("Chaikin oscillator", "Indicators", () => AddIndicator (new TKChartChaikinOscillator(this.series))); base.ViewDidLoad (); CGRect exampleBounds = this.View.Bounds; CGRect overlayChartBounds = new CGRect (exampleBounds.X, exampleBounds.Y, exampleBounds.Width, exampleBounds.Height/1.5f); nfloat indicatorsOffset = exampleBounds.Y + overlayChartBounds.Height + 15; CGRect indicatorsChartBounds = new CGRect (exampleBounds.X, indicatorsOffset, exampleBounds.Width, exampleBounds.Height - indicatorsOffset); overlayChart = new TKChart (overlayChartBounds); overlayChart.GridStyle.VerticalLinesHidden = false; overlayChart.AutoresizingMask = ~UIViewAutoresizing.None; this.View.AddSubview (overlayChart); indicatorsChart = new TKChart (indicatorsChartBounds); indicatorsChart.AutoresizingMask = ~UIViewAutoresizing.None; this.View.AddSubview (indicatorsChart); data = StockDataPoint.LoadStockPoints(-1); series = new TKChartCandlestickSeries (data.ToArray ()); this.loadCharts (); }
public override void PointSelected(TKChart chart, TKChartData point, TKChartSeries series, nint index) { this.selectedSeriesIndex = (int)series.Index; this.selectedDataPointIndex = (int)index; }
public override void PointDeselected (TKChart chart, TKChartData point, TKChartSeries series, nint index) { if (this.labelRender != null) { this.labelRender.SelectedDataPoint = -1; } }
public MyAnnotation (TKPredefinedShape shape, NSObject x, NSObject y, TKChartSeries series) : base(x, y, series) { this.Shape = shape; }
public override string TextForLabelAtPoint(TKChart chart, TKChartData dataPoint, TKChartSeries series, nuint dataIndex) { if (series is TKChartPieSeries) { TKChartDataPoint point = (TKChartDataPoint)dataPoint; return(point.DataName); } else if (series is TKChartBarSeries) { TKChartDataPoint point = (TKChartDataPoint)dataPoint; return(String.Format("{0}", point.DataXValue)); } else if (series is TKChartOhlcSeries) { TKChartFinancialDataPoint point = (TKChartFinancialDataPoint)dataPoint; return(String.Format("O:{0}\nH:{1}\nL:{2}\nC:{3}", point.Open, point.High, point.Low, point.Close)); } return(String.Format("{0}", ((TKChartDataPoint)dataPoint).DataYValue)); }
public override TKChartPointLabel LabelForDataPoint(TKChart chart, TKChartData dataPoint, string propertyName, TKChartSeries series, nuint dataIndex) { TKChartDataPoint point = (TKChartDataPoint)dataPoint; if (series.Index == (nuint)this.selectedSeriesIndex && dataIndex == (nuint)this.selectedDataPointIndex) { return(new MyPointLabel(point, series, String.Format("{0}", point.DataYValue))); } return(new TKChartPointLabel(point, series, String.Format("{0}", point.DataYValue))); }
public override TKChartPaletteItem PaletteItemForPoint(TKChart chart, nuint index, TKChartSeries series) { if (series.Index == (nuint)this.selectedSeriesIndex && index == (nuint)this.selectedDataPointIndex) { return(new TKChartPaletteItem(new TKStroke(UIColor.Black, 2.0f), new TKSolidFill(UIColor.White))); } if (series.Index == 0) { return(new TKChartPaletteItem(new TKSolidFill(new UIColor((float)(108 / 255.0), (float)(181 / 255.0), (float)(250 / 255.0), (float)1.0)))); } return(new TKChartPaletteItem(new TKSolidFill(new UIColor((float)(241 / 255.0), (float)(140 / 255.0), (float)(133 / 255.0), (float)1.0)))); }