C#,arcengine制作鹰眼全过程(带注释)
2008-04-18 21:02
316 查看
C#制作鹰眼全过程(带注释)
axMapControl1是主控件
要看清楚事件响应
1.鹰眼地图资源载入
private void axMapControl1_OnMapReplaced(object sender, IMapControlEvents2_OnMapReplacedEvent e)
{
//当主地图显示控件的地图更换时,鹰眼中的地图也跟随更换
axMapControl2.LoadMxFile(axMapControl1.DocumentFilename);
axMapControl2.Extent = axMapControl2.FullExtent;
}
2.绘制鹰眼矩形框
private void setMap2(IMapControlEvents2_OnExtentUpdatedEvent e)
{
// 得到新范围
IEnvelope pEnv = (IEnvelope)e.newEnvelope;
IGraphicsContainer pGra = axMapControl2.Map as IGraphicsContainer;
IActiveView pAv = pGra as IActiveView;
//在绘制前,清除axMapControl2中的任何图形元素
pGra.DeleteAllElements();
IRectangleElement pRectangleEle = new RectangleElementClass();
IElement pEle = pRectangleEle as IElement;
pEle.Geometry = pEnv;
//设置鹰眼图中的红线框
IRgbColor pColor = new RgbColorClass();
pColor.Red = 255;
pColor.Green = 0;
pColor.Blue = 0;
pColor.Transparency = 255;
//产生一个线符号对象
ILineSymbol pOutline = new SimpleLineSymbolClass();
pOutline.Width = 2;
pOutline.Color = pColor;
//设置颜色属性
pColor = new RgbColorClass();
pColor.Red = 255;
pColor.Green = 0;
pColor.Blue = 0;
pColor.Transparency = 0;
//设置填充符号的属性
IFillSymbol pFillSymbol = new SimpleFillSymbolClass();
pFillSymbol.Color = pColor;
pFillSymbol.Outline = pOutline;
IFillShapeElement pFillShapeEle = pEle as IFillShapeElement;
pFillShapeEle.Symbol = pFillSymbol;
pGra.AddElement((IElement)pFillShapeEle, 0);
pAv.PartialRefresh(esriViewDrawPhase.esriViewGraphics, null, null);
}
private void axMapControl1_OnExtentUpdated(object sender, IMapControlEvents2_OnExtentUpdatedEvent e)
{
setMap2(e);
}
3.互动
private void axMapControl2_OnMouseDown(object sender, IMapControlEvents2_OnMouseDownEvent e)
{
//by yl 改进 landgis@126.co
IRubberBand pBand = new RubberEnvelopeClass();
IGeometry pGeometry = pBand.TrackNew(axMapControl2.ActiveView.ScreenDisplay, null);
if (pGeometry.IsEmpty)
{
IPoint pPt = new PointClass();
pPt.PutCoords(e.mapX, e.mapY);
//改变主控件的视图范围
axMapControl1.CenterAt(pPt);
}
else
{
axMapControl1.Extent = pGeometry.Envelope;
axMapControl1.ActiveView.Refresh();
}
}
axMapControl1是主控件
要看清楚事件响应
1.鹰眼地图资源载入
private void axMapControl1_OnMapReplaced(object sender, IMapControlEvents2_OnMapReplacedEvent e)
{
//当主地图显示控件的地图更换时,鹰眼中的地图也跟随更换
axMapControl2.LoadMxFile(axMapControl1.DocumentFilename);
axMapControl2.Extent = axMapControl2.FullExtent;
}
2.绘制鹰眼矩形框
private void setMap2(IMapControlEvents2_OnExtentUpdatedEvent e)
{
// 得到新范围
IEnvelope pEnv = (IEnvelope)e.newEnvelope;
IGraphicsContainer pGra = axMapControl2.Map as IGraphicsContainer;
IActiveView pAv = pGra as IActiveView;
//在绘制前,清除axMapControl2中的任何图形元素
pGra.DeleteAllElements();
IRectangleElement pRectangleEle = new RectangleElementClass();
IElement pEle = pRectangleEle as IElement;
pEle.Geometry = pEnv;
//设置鹰眼图中的红线框
IRgbColor pColor = new RgbColorClass();
pColor.Red = 255;
pColor.Green = 0;
pColor.Blue = 0;
pColor.Transparency = 255;
//产生一个线符号对象
ILineSymbol pOutline = new SimpleLineSymbolClass();
pOutline.Width = 2;
pOutline.Color = pColor;
//设置颜色属性
pColor = new RgbColorClass();
pColor.Red = 255;
pColor.Green = 0;
pColor.Blue = 0;
pColor.Transparency = 0;
//设置填充符号的属性
IFillSymbol pFillSymbol = new SimpleFillSymbolClass();
pFillSymbol.Color = pColor;
pFillSymbol.Outline = pOutline;
IFillShapeElement pFillShapeEle = pEle as IFillShapeElement;
pFillShapeEle.Symbol = pFillSymbol;
pGra.AddElement((IElement)pFillShapeEle, 0);
pAv.PartialRefresh(esriViewDrawPhase.esriViewGraphics, null, null);
}
private void axMapControl1_OnExtentUpdated(object sender, IMapControlEvents2_OnExtentUpdatedEvent e)
{
setMap2(e);
}
3.互动
private void axMapControl2_OnMouseDown(object sender, IMapControlEvents2_OnMouseDownEvent e)
{
//by yl 改进 landgis@126.co
IRubberBand pBand = new RubberEnvelopeClass();
IGeometry pGeometry = pBand.TrackNew(axMapControl2.ActiveView.ScreenDisplay, null);
if (pGeometry.IsEmpty)
{
IPoint pPt = new PointClass();
pPt.PutCoords(e.mapX, e.mapY);
//改变主控件的视图范围
axMapControl1.CenterAt(pPt);
}
else
{
axMapControl1.Extent = pGeometry.Envelope;
axMapControl1.ActiveView.Refresh();
}
}
没钱又丑,农村户口。头可断,发型一定不能乱。 [最近在南昌忙GIS辛苦...ing] QQ: 14265545;83563956[10年不上一次的,还是论坛留言把] MSN:QQ14265545@HOTMAIL.COM 有空来看看我的blog http://gisempire.com/blog/blog.asp?name=cl991036 |
相关文章推荐
- C#制作鹰眼的详细全过程(带注释)实例代码
- C#制作鹰眼全过程(带注释)
- C#制作鹰眼全过程(带注释)
- C#制作鹰眼全过程
- C#制作注册机的过程
- rcGIS Engine9.2制作鹰眼全过程
- 智能可变大小的控件:一个控件制作的全过程(C#)
- C#制作、打包、签名、发布Activex全过程
- 阻止系统自动睡眠的小软件,附C#制作过程
- c#制作计算器全过程
- C#打包制作安装程序过程全记录
- C#结合Arcengine编写鹰眼,实现控件联动
- 扫雷游戏制作过程(C#描述):第二节、界面设计
- C#制作、打包、签名、发布Activex全过程(转)
- C#制作、打包、签名、发布Activex全过程
- 扫雷游戏制作过程(C#描述):第四节、菜单操作
- C#制作、打包、签名、发布Activex全过程
- C#制作、打包、签名、发布Activex全过程
- 制作SSIS Package包图解全过程续c#调用SSIS Package把SQL数据导入到Excel文件
- ArcEngine 鹰眼功能C#实现