チャート内、マウスポインタ位置の縦線表示対応
あると分かりやすいかなと思ったため提案です。無くても支障はないので要望ではなく提案です。良さそうであればご相談していただければと思います。
現在チャート内でマウスを動かすと“該当日の各株価情報”が左上に表示されます。この時、チャート内でも現在位置を縦線で描画すれば分かりやすいのではないかと思いました。
以下はサンプルです。本来は“表示有無の選択設定”を通じての機能だといいのかもしれませんが省いています。
Protra/Controls/ChartBox.cs: 421 行目付近: public int CalcIndexFromX(int x)
/// <summary> /// マウスポインタ位置 /// </summary> public int _MouseX = -1; /// <summary> /// マウスポインタのX座標から価格データのインデックスを計算する。 /// </summary> /// <param name="x">マウスポインタのX座標</param> /// <returns></returns> public int CalcIndexFromX(int x) { _MouseX = -1; if (Interpreter == null || x <= LeftMargin || x >= Width - RightMargin) return -1; _MouseX = x; return RightIndex - (Width - RightMargin - x - Dx / 2 - 1) / Dx; }
Protra/Controls/ChartBox.cs: 198 行目付近: protected override void OnPaint(PaintEventArgs e)
~ // 枠の描画 _graphics.DrawRectangle(new Pen(ForeColor), _chartRect); // ★マウスポインタ位置の縦線の描画 if (_MouseX != -1) { _graphics.DrawLine(new Pen(Color.Red), _MouseX, _chartRect.Top, _MouseX, _chartRect.Bottom); } DrawIndicatorNames(); DrawIndicatorValue(RightIndex);
Protra/Controls/ChartPanel.cs: 466 行目付近: private void chartBox_MouseMove(Object sender, MouseEventArgs e)
private void chartBox_MouseMove(Object sender, MouseEventArgs e) { // いったんマウスポインタ位置の縦線を消す。新しい縦線は OnPaint 内で描画する。 foreach (var box in _chartBoxes) { box._MouseX = -1; box.Invalidate(); } if (Prices == null) return; ~
あると分かりやすいかなと思ったため提案です。無くても支障はないので要望ではなく提案です。良さそうであればご相談していただければと思います。
現在チャート内でマウスを動かすと“該当日の各株価情報”が左上に表示されます。この時、チャート内でも現在位置を縦線で描画すれば分かりやすいのではないかと思いました。
以下はサンプルです。本来は“表示有無の選択設定”を通じての機能だといいのかもしれませんが省いています。
修正箇所:
Protra/Controls/ChartBox.cs: 421 行目付近:
public int CalcIndexFromX(int x)
Protra/Controls/ChartBox.cs: 198 行目付近:
protected override void OnPaint(PaintEventArgs e)
Protra/Controls/ChartPanel.cs: 466 行目付近:
private void chartBox_MouseMove(Object sender, MouseEventArgs e)