private SelectedPointInfo GetBlockInfo(KLineBar_KLineData chart, KLineBar_KLineData lastChart) { SelectedPointInfo b = new SelectedPointInfo(); b.LineHeight = 20; b.Width = 58; b.StartPoint = new Point(drawer.DisplayRect.X - b.Width, drawer.DisplayRect.Y); double lastEndPrice = lastChart != null ? lastChart.End : chart.Start; Pen pen = new Pen(Color.White); Brush brushNormal = new SolidBrush(Color.White); Font font = new Font("New Times Roman", 10, FontStyle.Regular); b.Lines.Add(new BlockLineInfo(FormatTime(chart.Time), brushNormal, font)); b.Lines.Add(new BlockLineInfo("开盘", brushNormal, font)); b.Lines.Add(new BlockLineInfo(chart.Start.ToString(), GetPriceBrush(chart.Start, lastEndPrice), font)); b.Lines.Add(new BlockLineInfo("最高", brushNormal, font)); b.Lines.Add(new BlockLineInfo(chart.High.ToString(), GetPriceBrush(chart.High, lastEndPrice), font)); b.Lines.Add(new BlockLineInfo("最低", brushNormal, font)); b.Lines.Add(new BlockLineInfo(chart.Low.ToString(), GetPriceBrush(chart.Low, lastEndPrice), font)); b.Lines.Add(new BlockLineInfo("收盘", brushNormal, font)); b.Lines.Add(new BlockLineInfo(chart.End.ToString(), GetPriceBrush(chart.End, lastEndPrice), font)); double uprange = Math.Round(chart.End - lastEndPrice, 2); b.Lines.Add(new BlockLineInfo(uprange.ToString(), GetPriceBrush(uprange, 0), font)); //涨幅 //double uppercent = Math.Round((chart.EndPrice - lastEndPrice) / lastEndPrice,2); double uppercent = Math.Round(uprange / lastEndPrice * 100, 2); b.Lines.Add(new BlockLineInfo(uppercent.ToString(), GetPriceBrush(uppercent, 0), font)); return(b); }
public void DrawSelectBlock(Graphics g) { if (drawer.SelectIndex < 0) { return; } SelectedPointInfo blockInfo = GetBlockInfo(drawer.SelectIndex); if (blockInfo == null) { return; } blockInfo.DrawGraph(g, drawer.ColorConfig); }
public SelectedPointInfo GetBlockInfo(int index, int timeIndex) { ITimeLineData data = drawer.DataProvider.GetRealData(); SelectedPointInfo info = new SelectedPointInfo(); info.LineHeight = 20; info.Width = 58; info.StartPoint = new Point(drawer.DisplayRect.X - info.Width, drawer.DisplayRect.Y); Brush brushNormal = new SolidBrush(Color.White); Font font = new Font("New Times Roman", 10, FontStyle.Regular); Brush brushRed = drawer.ColorConfig.Brush_CandleBlockUp; Brush brushGreen = drawer.ColorConfig.Brush_CandleBlockDown; //TODO info.Lines.Add(new BlockLineInfo("----", new SolidBrush(ColorUtils.GetColor("#CCCC00")), font)); info.Lines.Add(new BlockLineInfo("时间", brushNormal, font)); info.Lines.Add(new BlockLineInfo(GetTimeString(data.Arr_Time[timeIndex]), brushNormal, font)); info.Lines.Add(new BlockLineInfo("价格", brushNormal, font)); info.Lines.Add(new BlockLineInfo(data.Arr_Price[index].ToString(), brushNormal, font)); info.Lines.Add(new BlockLineInfo("均价", brushNormal, font)); //TODO info.Lines.Add(new BlockLineInfo("----", brushNormal, font)); info.Lines.Add(new BlockLineInfo("涨跌", brushNormal, font)); info.Lines.Add(new BlockLineInfo(data.Arr_UpRange[index].ToString(), brushNormal, font)); info.Lines.Add(new BlockLineInfo((data.Arr_UpPercent[index] + "%").ToString(), brushNormal, font)); info.Lines.Add(new BlockLineInfo("量", brushNormal, font)); info.Lines.Add(new BlockLineInfo(data.Arr_Mount[index].ToString(), brushNormal, font)); info.Lines.Add(new BlockLineInfo("持仓", brushNormal, font)); info.Lines.Add(new BlockLineInfo(data.Arr_Hold[index].ToString(), brushNormal, font)); int add = GetHoldAdd(index); Brush b; if (index == 0 || add == 0) { b = brushNormal; } else if (add > 0) { b = brushRed; } else { b = brushGreen; } info.Lines.Add(new BlockLineInfo(add.ToString(), b, font)); return(info); }
public void DrawSelectBlock(Graphics g) { if (drawer.SelectIndex < 0) { return; } int index = drawer.SelectIndex > drawer.DataProvider.CurrentIndex ? drawer.DataProvider.CurrentIndex : drawer.SelectIndex; SelectedPointInfo blockInfo = GetBlockInfo(index, drawer.SelectIndex); if (blockInfo == null) { return; } blockInfo.DrawGraph(g, drawer.ColorConfig); }