Ejemplo n.º 1
0
 /*
  * 選択されている制御点を更新する
  */
 private void UpdateSelectedControlPoint(ControlPoint cp)
 {
     controlPointProperty.SelectedObject = cp;
 }
Ejemplo n.º 2
0
        //ファイルから制御点をロード
        public void LoadVirtualLineFile(string filePath)
        {
            //現在の点は全部消す
            RemoveAllControlPoint();

            //            String data = "1515, -501\n1251, -477\n1098, -363\n1116, -150\n1320, -96\n1509, -192\n1494, -384\n1179, -603\n144, -597\n1023, -1287\n669, -273\n369, -1281\n1176, -603\n1470, -2346";
            String data = File.ReadAllText(filePath, System.Text.Encoding.GetEncoding("Shift_JIS"));

            //空白、タブを取り除く。ひどいコード!
            while (data.Contains(" "))
            {
                data = data.Replace(" ", "");
            }
            while (data.Contains("\t"))
            {
                data = data.Replace("\t", "");
            }

            //改行で分割
            string[] points = data.Split(new char[] { '\r', '\n' });
            int      line   = -1;

            foreach (string point in points)
            {
                line++;

                //カンマで分割
                string[] pointLocation = point.Split(',');

                try
                {
                    //カラム数が足りなくても、とにかくいけるところまでは読む(上位互換のため)
                    Point location = new Point();
                    location.X = int.Parse(pointLocation[0]);
                    location.Y = int.Parse(pointLocation[1]);

                    //ロケーションさえ読めれば点を作る
                    ControlPoint cp = AddControlPoint(location);

                    //他の値はオプション(カラムが無かったり不正値だった場合はcatchに飛ぶのでデフォルト値のまま)
                    int angle = int.Parse(pointLocation[2]);
                    cp.NativeAngle = angle;

                    int forward = int.Parse(pointLocation[3]);
                    cp.Forward = forward;

                    int allowableError = int.Parse(pointLocation[4]);
                    cp.AllowableError = allowableError;

                    bool slowdown = (pointLocation[5] == BOOL_TRUE_STRING)?true:false;
                    cp.Slowdown = slowdown;
                }
                catch (Exception e)
                {
                    //エラー処理はひどい
//					MessageBox.Show("エラーが発生しました。これ以降正常動作は期待できません。\r\n" + e.ToString());
                }
            }

            //線を再描画
            UpdateView();
        }