📄 mainfrm.cs
字号:
{
this.Close();
}
/// <summary>
/// 关于
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void mnAbout_Click(object sender, System.EventArgs e)
{
AboutDlg dlg=new AboutDlg();
dlg.ShowDialog();
}
/// <summary>
/// 绘制样例,该函数示范如何使用代码创建一些图形对象
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void mnDrawDemo_Click(object sender, System.EventArgs e)
{
//清空当前图形!
this.m_LineViewer.CloseMap();
//创建一个正五边形
CPolygon polygon=new CPolygon(6,80,50,40,-90);
CText label=new CText("Hello World -- by hoodlum1980",20,200,220,20,FontStyle.Regular,0x000000,0);
//一个起始角度为30度的椭圆
CEllipse ellipse=new CEllipse(0,0,50,25,30,0x010101,0xff4fff);
CCircle circle=new CCircle(200,10,20,0x010101,0x558899);
//创建一个多段线,围成一个多边形
double[] points=new double[]{0,0,50,100,100,200,10,150,0,0};
CPolyline polyline=new CPolyline(points, 0x010101);
//创建一个图元
CMeta meta=new CMeta();
meta.MetaID=0x101;
meta.Add(polygon);
//创建图元库,并把图元添加到图元库中,注意图元库可能为空(控件初始化时不会创建图元库)
if(LineViewCtl.METALIB==null)
LineViewCtl.METALIB=new MetaLib();
LineViewCtl.METALIB.Clear();
LineViewCtl.METALIB.Add(meta);
//创建引用对象(链接对象)
//几何变换参数,旋转20度,
TransParams tran=new TransParams(20,1.3,200,280);
CLinkObject link=new CLinkObject(meta.MetaID,tran);
//缩放倍数=0.7,偏移400,100
CLinkObject link2=new CLinkObject(meta.MetaID,0, 0.7, 300, 100);
//创建一个新的图层(类似文件)
Layer layer=new Layer();
layer.AddRange(new MapObject[] {polygon,label, ellipse,circle,polyline,link,link2});
layer.Name="图层001";
//创建一个新的图层组(类似文件夹)
LayerSet layerset=new LayerSet();
layerset.Name="图层组A";
layerset.Add(layer);
LayerSet layerset2=new LayerSet();
layerset2.Name="子文件夹";
layerset2.Add(layerset);
this.m_LineViewer.LAYERSET.Add(layerset2);
//获取全图边界
this.m_LineViewer.ViewBox = this.m_LineViewer.GetBorderRectD();
//缩放到全图
this.m_LineViewer.ZoomToViewbox();
//清空视图堆栈
this.m_LineViewer.ClearViewStack();
//将当前视图参数存入栈
this.m_LineViewer.PushCurrentView();
//广播全图改变的事件(用于通知其他观察者全图内容已经改变)
this.m_LineViewer.BroadcastPreviewMapChanged();
}
/// <summary>
/// 打开图形文件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void mnOpenPic_Click(object sender, System.EventArgs e)
{
OpenFileDialog dlg=new OpenFileDialog();
dlg.InitialDirectory = @"\Program Files\GisCtlDemo\";
dlg.Filter="*.lvf (矢量图形)|*.lvf|*.mif (MapInfo文件)|*.mif|*.* (所有文件)|*.*";
string filename;
int filterIndex=-1;
if(dlg.ShowDialog()==DialogResult.OK)
{
filename=dlg.FileName;
filterIndex=dlg.FilterIndex;
}
else return;
//错误信息
string errorMsg;
if(!this.m_LineViewer.LoadFile(filename,out errorMsg))
{
Cursor.Current=Cursors.Default;
MessageBox.Show("打开文件失败!\r\n"+errorMsg);
return;
}
}
/// <summary>
/// 保存图形
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void mnSavePic_Click(object sender, System.EventArgs e)
{
SaveFileDialog dlg=new SaveFileDialog();
dlg.Filter="*.lvf (矢量图形)|*.lvf|*.mif (Mif File)|*.mif";
string filename;
int filterIndex=-1;
if(dlg.ShowDialog()==DialogResult.OK)
{
filename=dlg.FileName;
filterIndex=dlg.FilterIndex;
}
else return;
//自动补充文件的后缀
switch(filterIndex)
{
case 1:
if(!filename.EndsWith(".lvf"))
filename+=".lvf";
break;
case 2:
if(!filename.EndsWith(".mif"))
filename+=".mif";
break;
}
string errorMsg;
if(!this.m_LineViewer.SaveFile(filename,out errorMsg))
MessageBox.Show(errorMsg);
else
MessageBox.Show("地图保存完成!\r\n"+filename);
}
/// <summary>
/// 关闭图形
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void mnClosePic_Click(object sender, System.EventArgs e)
{
this.m_LineViewer.CloseMap();
}
/// <summary>
/// 导航器
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void mnNaviDlg_Click(object sender, System.EventArgs e)
{
LineViewLib.LVNaviDlg dlg=new LVNaviDlg(this.m_LineViewer);
dlg.Show();
}
/// <summary>
/// 图层管理
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void mnLayerMgr_Click(object sender, System.EventArgs e)
{
LineViewLib.LVLayerDlg dlg=new LVLayerDlg(this.m_LineViewer);
dlg.ShowDialog();
}
/// <summary>
/// 选项设置
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void mnOptionsDlg_Click(object sender, System.EventArgs e)
{
LineViewLib.LVOptionDlg dlg=new LVOptionDlg(this.m_LineViewer);
dlg.ShowDialog();
}
/// <summary>
/// 平移工具
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void mnToolPan_Click(object sender, System.EventArgs e)
{
//菜单间互斥
if(this.m_LastCheckedMenuItem!=null)
this.m_LastCheckedMenuItem.Checked=false;
MenuItem item=sender as MenuItem;
item.Checked = true;
this.m_LastCheckedMenuItem=item;
this.m_LineViewer.CurrentTool=LVTool.Pan;
}
/// <summary>
/// 缩放到矩形
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void mnToolZoomRect_Click(object sender, System.EventArgs e)
{
//菜单间互斥
if(this.m_LastCheckedMenuItem!=null)
this.m_LastCheckedMenuItem.Checked=false;
MenuItem item=sender as MenuItem;
item.Checked = true;
this.m_LastCheckedMenuItem=item;
this.m_LineViewer.CurrentTool=LVTool.ZoomToRect;
}
/// <summary>
/// 捕捉对象
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void mnToolSelObj_Click(object sender, System.EventArgs e)
{
//菜单间互斥
if(this.m_LastCheckedMenuItem!=null)
this.m_LastCheckedMenuItem.Checked=false;
MenuItem item=sender as MenuItem;
item.Checked = true;
this.m_LastCheckedMenuItem=item;
this.m_LineViewer.CurrentTool=LVTool.CaptureObject;
}
/// <summary>
/// 设置中心点
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void mnToolSetCenter_Click(object sender, System.EventArgs e)
{
//菜单间互斥
if(this.m_LastCheckedMenuItem!=null)
this.m_LastCheckedMenuItem.Checked=false;
MenuItem item=sender as MenuItem;
item.Checked = true;
this.m_LastCheckedMenuItem=item;
this.m_LineViewer.CurrentTool=LVTool.SetCenter;
}
#endregion
/// <summary>
/// 工具栏图标按钮的处理!
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void toolBar1_ButtonClick(object sender, System.Windows.Forms.ToolBarButtonClickEventArgs e)
{
//获取当前按下按钮索引,强制转为byte!
int index=this.toolBar1.Buttons.IndexOf(e.Button);
switch(index)
{
case 0:
//前一个视图:
this.m_LineViewer.GotoPreviousView();
break;
case 1:
//后一个视图:
this.m_LineViewer.GotoNextView();
break;
case 2:
//缩放到全图(ViewBox)
this.m_LineViewer.ZoomToViewbox();
//非LVTool操作,需要将视图手工入栈!!!
this.m_LineViewer.PushCurrentView();
break;
case 3:
//zoom in: 放大
this.m_LineViewer.ZoomIn();
//非LVTool操作,需要将视图手工入栈!!!
this.m_LineViewer.PushCurrentView();
break;
case 4:
//zoom out: 缩小
this.m_LineViewer.ZoomOut();
//非LVTool操作,需要将视图手工入栈!!!
this.m_LineViewer.PushCurrentView();
break;
default:
break;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -