1、加载一个FDB,并在加载结束的时候绑定函数RcMouseClickSelect:
this.axRenderControl1.RcMouseClickSelect += new Gvitech.CityMaker.Controls._IRenderControlEvents_RcMouseClickSelectEventHandler(axRenderControl1_RcMouseClickSelect);
2、创建标签代码
ILabel label = objManager.CreateLabel(rootId);
label.Text = "label" + labelCount.ToString();
IPoint p = geoFactory.CreatePoint(gviVertexAttribute.gviVertexAttributeZ);
p.SetCoords(0, 0, 0, 0, 0);
label.Position = p;
labelCount++;
currentLabel = label;
this.axRenderControl1.InteractMode = gviInteractMode.gviInteractSelect;
this.axRenderControl1.MouseSelectMode = gviMouseSelectMode.gviMouseSelectMove | gviMouseSelectMode.gviMouseSelectClick;
this.axRenderControl1.MouseSelectObjectMask = gviMouseSelectObjectMask.gviSelectFeatureLayer | gviMouseSelectObjectMask.gviSelectTerrain;
mode = 1;
3、对应的鼠标点击事件代码
void axRenderControl1_RcMouseClickSelect(object sender, Gvitech.CityMaker.Controls._IRenderControlEvents_RcMouseClickSelectEvent e)
{
if (e.pickResult == null)
return;
if (e.eventSender == gviMouseSelectMode.gviMouseSelectMove)
{
if (currentLabel != null)
currentLabel.Position = e.intersectPoint;
}
else if (e.eventSender == gviMouseSelectMode.gviMouseSelectClick)
{
switch (mode)
{
case 1:
{
this.axRenderControl1.InteractMode = gviInteractMode.gviInteractNormal;
}
break;
case 2:
{
if (clickCount == 0)
{
ILabelPickResult pr = e.pickResult as ILabelPickResult;
if (pr != null)
{
currentLabel = pr.Label;
clickCount++;
}
}
else if (clickCount == 1)
{
this.axRenderControl1.InteractMode = gviInteractMode.gviInteractNormal;
}
}
break;
}
}
}
4、标签移动代码
private void toolStripButtonEditLabel_Click(object sender, EventArgs e)
{
this.axRenderControl1.InteractMode = gviInteractMode.gviInteractSelect;
this.axRenderControl1.MouseSelectMode = gviMouseSelectMode.gviMouseSelectMove | gviMouseSelectMode.gviMouseSelectClick;
this.axRenderControl1.MouseSelectObjectMask = gviMouseSelectObjectMask.gviSelectLable | gviMouseSelectObjectMask.gviSelectFeatureLayer | gviMouseSelectObjectMask.gviSelectTerrain;
string tmpCursorPath = Path.Combine(Application.StartupPath.Substring(0, flag), @"Samples\Media\cursors\Cross.cur");
this.axRenderControl1.MouseCursor = tmpCursorPath;
currentLabel = null;
mode = 2;
clickCount = 0;
}
5、直接集成这几个按钮事件到你的工程。
技术支持 sunhaihong@gvitech.com
MrSun