/// <summary> /// 移動情報を更新する /// 注意:いったんスクリーン座標に変換して移動するので、コード座標に変換誤差が生じる可能性がある。 /// </summary> /// <param name="dragStartPos">移動開始時のマウス座標(ドラッグ開始点)</param> /// <param name="currentPos">現在のマウス座標</param> /// <param name="type">座標変更タイプ</param> public void Develop(ScreenPos dragStartPos, ScreenPos currentPos, DevelopType type) { _lastDevelpType = type; var sdelta = currentPos - dragStartPos; // マウスの移動量 _prevShift = sdelta; foreach (DictionaryEntry de in this) // 選択中全パーツに対して行う { var p3 = (Pos3)de.Value; var target = (PartsBase)de.Key; p3.Pre = p3.Now; // ひとつ前の座標に記憶 p3.Now = (CodeRect)p3.Now.Clone(); // サイズ系の処理が正しく動作するために必要 var virtualPos = target.GetCdRect(p3.NowPane, target.GetScRect(p3.OrgPane, p3.Org) + sdelta); // 移動後の位置を計算 var d = target.GetCdPos(p3.NowPane, sdelta); //Debug.WriteLine( string.Format( "[{0}] Delta[{1}]:Offset[{2}]", i, d, p3.Offset) ); virtualPos = CodeRect.FromLTWH(virtualPos.LT.X + p3.Offset.X, virtualPos.LT.Y, virtualPos.Width, virtualPos.Height); switch (type) { case DevelopType.Move: p3.Now = virtualPos; if (p3.Now.Width != p3.Org.Width) { p3.Now.RB.X = p3.Now.LT.X + p3.Org.Width - 1; // 幅が変わらないようにする } break; case DevelopType.SizeRight: p3.Now.RB.X = virtualPos.RB.X; break; case DevelopType.SizeLeft: p3.Now.LT.X = virtualPos.LT.X; break; case DevelopType.SizeTop: p3.Now.LT.Y = virtualPos.LT.Y; break; case DevelopType.SizeBottom: p3.Now.RB.Y = virtualPos.RB.Y; break; } } }
/// <summary> /// 動作タイプを指定する /// </summary> /// <param name="value"></param> public void SetDevelop(DevelopType value) { dev = value; _lastDevelpType = dev; }
public DevelopmentInfo(DevelopType t, string team, string profile) { developmentTeam = team; provisioningProfileName = profile; tag = t; }