AE添加设置线要素,并添加
来源:互联网 发布:淘宝定价公式 编辑:程序博客网 时间:2024/06/02 12:22
基本上与添加点要素相同,只是多加了一个双击的结束响应,和一个mousemove的响应,主要程序如下,
case 1://添加mousedown函数
{
HRESULT hr;
if(m_pNewLineFeedback ==NULL)
{
CoCreateInstance(CLSID_NewLineFeedback,
NULL,CLSCTX_ALL,IID_INewLineFeedback,
(void**)&m_pNewLineFeedback);
ISymbolPtr isymbol;
if(m_pNewLineFeedback == NULL) return;
m_pNewLineFeedback->get_Symbol(&isymbol);
ISimpleLineSymbolPtr pslnsym(isymbol);
if(pslnsym == NULL) return;
IRgbColorPtr prgb(CLSID_RgbColor);
prgb->put_Red(0);
prgb->put_Green(205);
prgb->put_Blue(0);
IColorPtr icolor(prgb);
pslnsym->put_Color(icolor);
pslnsym->put_Style(esriSLSDot);
IScreenDisplayPtr pScrD;
iActiveView->get_ScreenDisplay(&pScrD);
m_pNewLineFeedback->putref_Display(pScrD);
m_pNewLineFeedback->Start(ipoint);
}
else
hr = m_pNewLineFeedback->AddPoint(ipoint);
break;
}
void CAoEx1View::OnDoubleClickMapcontrol1(long button, long shift, long X, long Y, double mapX, double mapY)
{
// TODO: 在此处添加消息处理程序代码
IActiveViewPtr iActiveView(m_ipMap);
switch(m_operateType)
{
case 1:
{
IPolylinePtr ipolyline;
if(m_pNewLineFeedback == NULL) break;
if(m_isymbol != NULL) m_pNewLineFeedback->putref_Symbol(m_isymbol);
m_pNewLineFeedback->Stop(&ipolyline);
m_pgeometry = ipolyline;
if(ipolyline != NULL)
AddCreateElement(m_pgeometry,iActiveView);
m_pNewLineFeedback =NULL;
iActiveView->Refresh();
}break;
}
void CAoEx1View::OnTestMarkerStyle()//打开选择要素类型对话框函数
{
// TODO: 在此添加命令处理程序代码
//IActiveViewPtr iActiveView(m_ipMap);
ISymbolSelectorPtr pSymbolSelector(CLSID_SymbolSelector);//symbol select
VARIANT_BOOL bOK;
if(pSymbolSelector == NULL) return;
switch(m_operateType)
{
case 0:
{
ISimpleMarkerSymbolPtr psimpleMarksb(CLSID_SimpleMarkerSymbol);//simple marker
pSymbolSelector->AddSymbol((ISymbolPtr)psimpleMarksb,&bOK);//将simple marker添加到symbol select中
}
break;
case 1:
{
ISimpleLineSymbolPtr psimpleLinesb(CLSID_SimpleLineSymbol);//simple marker
pSymbolSelector->AddSymbol((ISymbolPtr)psimpleLinesb,&bOK);//将simple marker添加到symbol select中
}
break;
}
HRESULT hr;
hr = pSymbolSelector->SelectSymbol(0,&bOK);
if(FAILED(hr)) return;
if(bOK)
pSymbolSelector->GetSymbolAt(0,&m_isymbol);
void CAoEx1View::AddCreateElement(IGeometryPtr pgeomln, IActiveViewPtr iactiveview)
{
IGraphicsContainerPtr pgracont(iactiveview);
switch(m_operateType)
{
case 0:
{
IMarkerElementPtr pmarkerelem(CLSID_MarkerElement);//创建element对象,是element
if(pmarkerelem == NULL) return;
IMarkerSymbolPtr imarkerSymbol(m_isymbol);//用m_isymbol初始化imarkerSymbol,是symbol
pmarkerelem->put_Symbol(imarkerSymbol);//将symbol添加到element
((IElementPtr)pmarkerelem)->put_Geometry(pgeomln);
pgracont->AddElement((IElementPtr)pmarkerelem,0);
}break;
case 1:
{
ILineElementPtr plineelem(CLSID_LineElement);
if(plineelem ==NULL) break;
if(m_isymbol != NULL)
{
ILineSymbolPtr ilineSymbol(m_isymbol);
plineelem->put_Symbol(ilineSymbol);
}
IElementPtr pelem(plineelem);
pelem->put_Geometry(pgeomln);
pgracont->AddElement(pelem,0);
}break;
}
}
void CAoEx1View::OnMouseMoveMapcontrol1(long button, long shift, long X, long Y, double mapX, double mapY)
{
MapComposer mapComposer;
mapComposer.m_ipMap = m_ctrlMap.get_Map();
mapComposer.ShowMouseCoord(mapX,mapY);
IPointPtr pPoint(CLSID_Point);
pPoint->PutCoords(mapX,mapY);
switch(m_operateType)
{
case 1:
m_ctrlMap.put_MousePointer(2);//esriPointerCrosshair == 2
if(m_pNewLineFeedback != NULL)
m_pNewLineFeedback->MoveTo(pPoint);
break;
}
// TODO: 在此处添加消息处理程序代码
}
- AE添加设置线要素,并添加
- AE添加设置点要素,并添加
- AE添加设置点要素,并添加,简化
- AE线要素编辑
- 简单VBA添加线要素
- ARCEngine 添加创建线要素
- AE CreateFeatureClass 创建shp. 删除shp. 向shp中添加要素
- AE添加CAD文件
- AE添加JPG文件
- AE添加SDE数据库
- AE ToolbarControl中添加工具
- AE ToolbarControl中添加工具
- AE添加引用和控件
- AE二次开发-添加制图图例
- 图层中批量添加点要素
- AE二次开发,右键图层,设置图层要素标注
- Ubuntu 添加新分区 并设置挂载点
- Linux添加FTP用户并设置权限
- 使用SQL语句中between and查询数据出错
- HTML文档中的meta标签 name http-equiv
- Mng和Png
- Flex 4 List Data Paging(Flex 4 List控件分页功能的实现)
- Flex组件的一些怪问题
- AE添加设置线要素,并添加
- swirl diamond wm6.5 fifa 2010 世界杯主题
- 通用事件
- 心情
- MSDN文档
- 在内核中创建文件 filp_open/sys_open
- dhtmlx使用翻译(六)dhtmlxgrid 单元格操作
- 跪求《软件工程》作业 一份 价格详谈
- 仅用css编写无限分级弹出菜单