カーブエディタ作成 外観の作成2

前回の記事 bravememo.hatenablog.com

完成図

少し変更したい箇所があったので変更しました。 f:id:Brave345:20191207163910p:plain

入力箇所の表示桁数の変更

DecimalPlavesを2にして小数点の表示をし、 MaximumとMiniMumを変更して入力できる上限を増やしました。 ここら辺はまた変更かけるかも

f:id:Brave345:20191207163942p:plain

線を表示するクラスを追加

いままではすべてFormクラスに記述していてコードが見づらかったのでコードを分割させました。あとpictureBoxの端がグラフの端だと少し見づらいのでグラフの一番上と下に線を追加しました。 それにともないpictureBoxのサイズを少し縦に大きくしました。 以下コード

    // 直線を描画するクラス
    class LineBase
    {
        protected Point m_startPoint;   //開始点
        protected Point m_endPoint;     //終了点
        protected Pen m_pen;            //線の色

        // コンストラクタ
        public LineBase()
        {
            m_startPoint = new Point(0, 0);
            m_endPoint = new Point(0, 0);
            m_pen = new Pen(Color.White, 1);
        }
       // デストラクタ
         ~LineBase()
        {
        }
        // 初期化
        virtual public void Init()
        {
        }
        // 直線描画
        public void Paint(Graphics g)
        {
            g.DrawLine(m_pen, m_startPoint, m_endPoint);
        }
    }
    // 中心の線
    class CenterLine : LineBase
    {
        // 初期化
        public override void Init()
        {
            base.Init();
            m_startPoint.X = 0;
            m_startPoint.Y = 160;
            m_endPoint.X = 600;
            m_endPoint.Y = 160;
            m_pen = new Pen(Color.FromArgb(100, 200, 200, 200), 1);
        }
    }
    // 上の線
    class TopLine : LineBase
    {
        // 初期化
        public override void Init()
        {
            base.Init();
            m_startPoint.X = 0;
            m_startPoint.Y = 10;
            m_endPoint.X = 600;
            m_endPoint.Y = 10;
            m_pen = new Pen(Color.FromArgb(100, 200, 200, 200), 1);
        }
    }
    // 下の線
    class BottomLine : LineBase
    {
        // 初期化
        public override void Init()
        {
            base.Init();
            m_startPoint.X = 0;
            m_startPoint.Y = 310;
            m_endPoint.X = 600;
            m_endPoint.Y = 310;
            m_pen = new Pen(Color.FromArgb(100, 200, 200, 200), 1);
        }
    }
//一部コードを省略しています
 public partial class Form1 : Form
    {
        CenterLine m_CenterLine;
        TopLine m_TopLine;
        BottomLine m_BottomLine;

      public Form1()
        {
            StandartPointInit();
        }
      //中心の線を引くためのポイント初期化
        public void StandartPointInit()
        {
            m_CenterLine = new CenterLine();
            m_TopLine = new TopLine();
            m_BottomLine = new BottomLine();
            m_CenterLine.Init();
            m_TopLine.Init();
            m_BottomLine.Init();
        }

  //Paintイベント
   private void TestPaint(object sender, PaintEventArgs e)
        {
          Graphics g = e.Graphics;
            m_CenterLine.Paint(g);
            m_TopLine.Paint(g);
            m_BottomLine.Paint(g);
        }
   }

Labelでメモ追加

グラフ中にある最小値とか書いてあるやつをLabelで適当に追加。 メモとして置いてあるだけなのでそのうち消す。

終わりに

次あたりに一番重要な点の追加、移動の実装をしていきたい。