/* * 選択されている制御点を更新する */ private void UpdateSelectedControlPoint(ControlPoint cp) { controlPointProperty.SelectedObject = cp; }
//ファイルから制御点をロード 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(); }