본문으로 건너뛰기

OnMouseUpEvent

event MouseBaseObjectMouseUpEventHandler OnMouseUpEvent

마우스 Up 이벤트

Examples

// VIZCore3D.NET Control
private VIZCore3D.NET.VIZCore3DControl vizcore3d;

// 마우스 위치
public System.Drawing.Point MousePt { get; set; }

// 선택 BLOCK 이동 거리
public VIZCore3D.NET.Data.Vertex3D BlockMovingDistance { get; set; }

private void Example()
{
// 마우스 다운 이벤트
vizcore3d.View.MouseBasedObjectMove.OnMouseDownEvent += MouseBasedObjectMove_OnMouseDownEvent;

// 마우스 이동 이벤트
vizcore3d.View.MouseBasedObjectMove.OnMouseMoveEvent += MouseBasedObjectMove_OnMouseMoveEvent;

// 마우스 업 이벤트
vizcore3d.View.MouseBasedObjectMove.OnMouseUpEvent += MouseBasedObjectMove_OnMouseUpEvent;

// 마우스 더블클릭 이벤트
vizcore3d.View.MouseBasedObjectMove.OnMouseDoubleClickEvent += MouseBasedObjectMove_OnMouseDoubleClickEvent;
}

private void MouseBasedObjectMove_OnMouseDownEvent(object sender, VIZCore3D.NET.Event.EventManager.MouseBaseObjectMoveEventArgs e)
{
string str = string.Format("Mouse Down : {0} / {1} / {2} / {3} / {4} / {5} / {6}"
, e.MoveOption.ToString()
, e.GroupId
, e.Move.ToString()
, e.Anlge
, e.MousePosition.X
, e.MousePosition.Y
, e.Node.Count()
);

System.Diagnostics.Debug.WriteLine(str);

// Mouse Down 위치 백업
MousePt = e.MousePosition;

// 선택 BLOCK 위치
BlockMovingDistance = new VIZCore3D.NET.Data.Vertex3D(0, 0, 0);
}

private void MouseBasedObjectMove_OnMouseMoveEvent(object sender, VIZCore3D.NET.Event.EventManager.MouseBaseObjectMoveEventArgs e)
{
string str = string.Format("Mouse Move : {0} / {1} / {2} / {3} / {4} / {5} / {6}"
, e.MoveOption.ToString()
, e.GroupId
, e.Move.ToString()
, e.Anlge
, e.MousePosition.X
, e.MousePosition.Y
, e.Node.Count()
);

System.Diagnostics.Debug.WriteLine(str);

// 마우스로 회전일 경우는 중단
if (e.MoveOption == VIZCore3D.NET.Manager.MouseBasedObjectMoveManager.MovingOptions.ROTATION) return;

// 현재 이동되는 개체의 연계된 리뷰 정보(아이디) 조회
List<int> review = vizcore3d.View.MouseBasedObjectMove.GetLinkedReview(e.GroupId);
if (review.Count == 0) return;

// 해당 리뷰(노트)의 정보 조회
VIZCore3D.NET.Data.NoteItem note = vizcore3d.Review.Note.GetItem(review[0]);

// 해당 리뷰(노트)의 위치 정보 조회
List<VIZCore3D.NET.Data.ReviewPosition> position = note.Position;

// 마우스가 이동한 거리만큼 리뷰의 위치를 재설정
note.UpdatePosition(position[0], position[0].Position + e.Move);

// BLOCK 이동 거리 누적
BlockMovingDistance = BlockMovingDistance + e.Move;
}

private void MouseBasedObjectMove_OnMouseUpEvent(object sender, VIZCore3D.NET.Event.EventManager.MouseBaseObjectMoveEventArgs e)
{
string str = string.Format("Mouse Up : {0} / {1} / {2} / {3} / {4} / {5} / {6}"
, e.MoveOption.ToString()
, e.GroupId
, e.Move.ToString()
, e.Anlge
, e.MousePosition.X
, e.MousePosition.Y
, e.Node.Count()
);

System.Diagnostics.Debug.WriteLine(str);

string ptStr = string.Format("X: {0}=={1} / Y: {2}=={3}", MousePt.X, e.MousePosition.X, MousePt.Y, e.MousePosition.Y);
System.Diagnostics.Debug.WriteLine(ptStr);

List<VIZCore3D.NET.Data.NearestObjectByAxisPoint> items
= vizcore3d.GeometryUtility.GetNearestObjects(
e.MousePosition.X /* Mouse Location X */
, e.MousePosition.Y /* Mouse Location Y */
, true /* Visible Only */
, false /* Opaque Only */
);

if (items.Count != 1) return;

// 현재 이동되는 개체의 연계된 리뷰 정보(아이디) 조회
List<int> review = vizcore3d.View.MouseBasedObjectMove.GetLinkedReview(e.GroupId);
if (review.Count == 0) return;

// 해당 리뷰(노트)의 정보 조회
VIZCore3D.NET.Data.NoteItem note = vizcore3d.Review.Note.GetItem(review[0]);

// 해당 리뷰(노트)의 위치 정보 조회
List<VIZCore3D.NET.Data.ReviewPosition> position = note.Position;

// 마우스가 이동한 거리만큼 리뷰의 위치를 재설정
note.UpdatePosition(position[0], position[0].Position - new VIZCore3D.NET.Data.Vertex3D(BlockMovingDistance.X, BlockMovingDistance.Y, BlockMovingDistance.Z));

// 원래 이동전 위치로 이동
vizcore3d.Object3D.Transform.Move(e.Node.ToArray(), -BlockMovingDistance.X, -BlockMovingDistance.Y, -BlockMovingDistance.Z, false);
}

private void MouseBasedObjectMove_OnMouseDoubleClickEvent(object sender, Event.EventManager.MouseBaseObjectMoveEventArgs e)
{
string str = string.Format("Mouse DoubleClick : {0} / {1} / {2} / {3} / {4} / {5} / {6}"
, e.MoveOption.ToString()
, e.GroupId
, e.Move.ToString()
, e.Anlge
, e.MousePosition.X
, e.MousePosition.Y
, e.Node.Count()
);

System.Diagnostics.Debug.WriteLine(str);

List<VIZCore3D.NET.Data.NearestObjectByAxisPoint> items
= vizcore3d.GeometryUtility.GetNearestObjects(
e.MousePosition.X /* Mouse Location X */
, e.MousePosition.Y /* Mouse Location Y */
, true /* Visible Only */
, false /* Opaque Only */
);

if (items.Count == 0) return;

// 선택된 블록 90도 회전
vizcore3d.Object3D.Transform.Rotate(e.Node.ToArray(), 0, 0, 90, false, false);
}