I'm trying to print bar numbers at the bottom or top of the chart within OnRender, but the code throws an index out of range error.
protected override void OnBarUpdate()
{
Values[0][0] = Bars.BarsSinceNewTradingDay;
}
protected override void OnRender(ChartControl chartControl, ChartScale chartScale)
{
base.OnRender(chartControl, chartScale);
SharpDX.Direct2D1.Brush dxBrush = FNTcolor.ToDxBrush(RenderTarget);
TextFormat textFormat = TextFontta.ToDirectWriteTextFormat();
double y = DrawAtTop ? 5 + TextOffset * textFormat.FontSize : ChartPanel.H - 35 - TextOffset * textFormat.FontSize;
double startX = -1;
int daysOnChart = 0;
for (int barIndex = ChartBars.FromIndex; barIndex < ChartBars.ToIndex; barIndex++)
{
if (barIndex > 0 && barIndex < ChartBars.ToIndex)
{
string myString = barIndex.ToString("N0");
// string myString = Values[0][barIndex].ToString("N0");
startX = chartControl.GetXByBarIndex(ChartBars, barIndex);
Point startPoint = new Point(startX, y);
TextLayout textLayout = new TextLayout(Globals.DirectWriteFactory, myString, textFormat, TextWidth , textFormat.FontSize);
RenderTarget.DrawTextLayout(startPoint.ToVector2() , textLayout, dxBrush);
textLayout.Dispose();
}
}
textFormat.Dispose();
}
Printing the barIndex works, but not printing the plot values.
string myString = barIndex.ToString("N0");
// string myString = Values[0][barIndex].ToString("N0");
I'd appreciate any help.
Thomas

Comment