..
This commit is contained in:
@@ -774,7 +774,7 @@ namespace AGVMapEditor.Forms
|
||||
private void RefreshNodeList()
|
||||
{
|
||||
listBoxNodes.DataSource = null;
|
||||
listBoxNodes.DataSource = this._mapCanvas.Nodes;
|
||||
listBoxNodes.DataSource = this._mapCanvas.Items;
|
||||
listBoxNodes.DisplayMember = "DisplayText";
|
||||
listBoxNodes.ValueMember = "Id";
|
||||
|
||||
@@ -790,7 +790,7 @@ namespace AGVMapEditor.Forms
|
||||
|
||||
private void ListBoxNodes_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (listBoxNodes.SelectedItem is MapNode selectedNode)
|
||||
if (listBoxNodes.SelectedItem is NodeBase selectedNode)
|
||||
{
|
||||
_selectedNode = selectedNode;
|
||||
UpdateNodeProperties();
|
||||
@@ -1673,5 +1673,52 @@ namespace AGVMapEditor.Forms
|
||||
// 현재 선택된 노드의 속성창 및 리스트 갱신
|
||||
UpdateNodeProperties();
|
||||
}
|
||||
|
||||
private void btAddMagnet_Click(object sender, EventArgs e)
|
||||
{
|
||||
// 마그넷 추가
|
||||
var result = MessageBox.Show("곡선 마그넷(Bezier)을 추가하시겠습니까?\n(예: 베지어 곡선, 아니오: 직선, 취소: 중단)",
|
||||
"마그넷 타입 선택", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);
|
||||
|
||||
if (result == DialogResult.Cancel) return;
|
||||
|
||||
bool isBezier = (result == DialogResult.Yes);
|
||||
|
||||
// 화면 중앙 좌표 계산 (World Coordinate)
|
||||
float zoom = _mapCanvas.ZoomFactor;
|
||||
PointF pan = _mapCanvas.PanOffset;
|
||||
|
||||
float worldCX = (_mapCanvas.Width / 2f) / zoom - pan.X;
|
||||
float worldCY = (_mapCanvas.Height / 2f) / zoom - pan.Y;
|
||||
|
||||
// 고유 ID 생성
|
||||
string id = _mapCanvas.GenerateUniqueNodeId();
|
||||
|
||||
var magnet = new MapMagnet { Id = id };
|
||||
|
||||
// 점 생성 시 정규화(Snap) 처리
|
||||
int cx = (int)worldCX;
|
||||
int cy = (int)worldCY;
|
||||
|
||||
magnet.StartPoint = new Point(cx - 50, cy);
|
||||
magnet.EndPoint = new Point(cx + 50, cy);
|
||||
|
||||
if (isBezier)
|
||||
{
|
||||
magnet.ControlPoint = new MapMagnet.MagnetPoint { X = cx, Y = cy - 50 };
|
||||
}
|
||||
|
||||
// 캔버스에 추가
|
||||
_mapCanvas.Magnets.Add(magnet);
|
||||
_hasChanges = true;
|
||||
|
||||
UpdateTitle();
|
||||
RefreshMapCanvas();
|
||||
RefreshNodeList();
|
||||
|
||||
// 추가된 마그넷 선택
|
||||
//_mapCanvas.SelectedNode = magnet;
|
||||
UpdateNodeProperties();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user