/// <summary> /// CSVからデータを読み込み /// </summary> /// <param name="s"></param> /// <returns></returns> public List <CurvePointControl.BezierPoint> Load(string s) { List <CurvePointControl.BezierPoint> list = new List <CurvePointControl.BezierPoint>(); StreamReader file = new StreamReader(s); //末尾まで繰り返す while (!file.EndOfStream) { // CSVファイルの一行を読み込む string line = file.ReadLine(); // 読み込んだ一行をカンマ毎に分けて配列に格納する string[] values = line.Split(','); CurvePointControl.BezierPoint b = ToBezierPoint(values); list.Add(b); } file.Close(); //例外処理 var sx = CMath.ChageDecimalPosX(list[0].startPoint.X); var ex = CMath.ChageDecimalPosX(list[list.Count - 1].endPoint.X); if (sx != 0) { MessageBox.Show("グラフデータがおかしいです"); } if (ex != 1) { MessageBox.Show("グラフデータがおかしいです"); } return(list); }
/// <summary> /// 終了点 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public void ChangeEndPoint(object sender, EventArgs e) { int num = CMath.ChageNomalPosY(numericUpDown7.Value); int num2 = m_CurvePointControl.SetEndPoint(num);; numericUpDown7.Value = CMath.ChageDecimalPosY(num2); if (!m_CurvePointControl.isMoveSelectPoint()) { pictureBox1.Refresh(); //再描画 } bp = m_CurvePointControl.GetBezierPoint(); }
/// <summary> /// 点を動かした際同期を取る /// </summary> public void numericUpDownSync() { bp = m_CurvePointControl.GetBezierPoint(); numericUpDown1.Value = CMath.ChageDecimalPosX(bp.startPoint.X); numericUpDown2.Value = CMath.ChageDecimalPosX(bp.controlPoint1.X); numericUpDown3.Value = CMath.ChageDecimalPosX(bp.controlPoint2.X); numericUpDown4.Value = CMath.ChageDecimalPosY(bp.startPoint.Y); numericUpDown5.Value = CMath.ChageDecimalPosY(bp.controlPoint1.Y); numericUpDown6.Value = CMath.ChageDecimalPosY(bp.controlPoint2.Y); numericUpDown7.Value = CMath.ChageDecimalPosY(m_CurvePointControl.GetEndPointY()); numericUpDown8.Value = CMath.ChageDecimalPosY(m_CurvePointControl.GetFirstStartPointY()); }
/// <summary> /// //座標を0~1の間に変換し文字列化させる /// </summary> /// <param name="bs"></param> /// <returns></returns> public string[] ToSting(CurvePointControl.BezierPoint bs) { //座標を0~1の間に変換し文字列化させる string[] name = new string[4]; name[0] = CMath.ChageDecimalPosX(bs.startPoint.X).ToString() + "," + CMath.ChageDecimalPosY(bs.startPoint.Y).ToString(); name[1] = CMath.ChageDecimalPosX(bs.controlPoint1.X).ToString() + "," + CMath.ChageDecimalPosY(bs.controlPoint1.Y).ToString(); name[2] = CMath.ChageDecimalPosX(bs.controlPoint2.X).ToString() + "," + CMath.ChageDecimalPosY(bs.controlPoint2.Y).ToString(); name[3] = CMath.ChageDecimalPosX(bs.endPoint.X).ToString() + "," + CMath.ChageDecimalPosY(bs.endPoint.Y).ToString(); return(name); }
/// <summary> /// 文字列から座標に変換 /// </summary> /// <param name="values"></param> CurvePointControl.BezierPoint ToBezierPoint(string[] values) { //文字列を数値に変換 CurvePointControl.BezierPoint bp = new CurvePointControl.BezierPoint(); try { bp.startPoint.X = CMath.ChageNomalPosX(decimal.Parse(values[0])); bp.startPoint.Y = CMath.ChageNomalPosY(decimal.Parse(values[1])); bp.controlPoint1.X = CMath.ChageNomalPosX(decimal.Parse(values[2])); bp.controlPoint1.Y = CMath.ChageNomalPosY(decimal.Parse(values[3])); bp.controlPoint2.X = CMath.ChageNomalPosX(decimal.Parse(values[4])); bp.controlPoint2.Y = CMath.ChageNomalPosY(decimal.Parse(values[5])); bp.endPoint.X = CMath.ChageNomalPosX(decimal.Parse(values[6])); bp.endPoint.Y = CMath.ChageNomalPosY(decimal.Parse(values[7])); } catch (Exception e) { MessageBox.Show(e.Message); Console.WriteLine(e.Message); // エラーメッセージを表示 } return(bp); }