ArcGISEngine二次开发提高篇 联系客服

发布时间 : 星期一 文章ArcGISEngine二次开发提高篇更新完毕开始阅读df0ab248b81aa8114431b90d6c85ec3a86c28b75

private bool mIsEditing; orkspace; mWorkspaceEdit = pWorkspace as IWorkspaceEdit; if (mWorkspaceEdit == null) return; creenDisplay;

pNewLineFeedback = mDisplayFeedback as INewLineFeedback; creenDisplay;

pNewPolygonFeedback = mDisplayFeedback as INewPolygonFeedback; creenDisplay;

et项目,项目名称为MapRender,将Form1的名字设置为MainForm,并添

加ToolbarControl 、MapControl、TOCControl、LicenceControl和Button等五个控件。并将ToolbarControl 、TOCControl的伙伴控件设为MapControl。控件布局效果如下图所示。

图 8控件布局效果

在ToolbarControl 加载添加数据按钮和地图浏览的功能按钮,如下图所示。

图 9工具栏设置效果

添加Buttom按钮的属性设置如下 :

表 4控件属性设置

控件类型 Button Button Button Button Button Button Name属性 btnSimpIeRenderer btnCIassBreakRenderer btnUniqueValueRenderer btnSymbolRenderer btnChartRenderer btnDotDensityRenderer Text属性 简单着色 分级着色 唯一值着色 依比例符号着色 质量图着色 点密度着色 控件说明 对图层简单着色 对图层分级着色 对图层唯一值着色 对图层依比例符号着色 对图层质量图着色 对图层点密度着色 1.4 代码添加及解释

该工程需要添加如下引用: using using using using using

在axMapControl1控件中添加图层,如图所示:

图 10添加初始化图层

1. 简单着色代码添加

添加btnSimpIeRenderer按钮的Click事件代码:

private void btnSimpIeRenderer_Click(object sender, EventArgs e) {

IMap pMap = ;

分级着色代码添加 在前面代码的基础上添加如下引用: using using

然后添加btnCIassBreakRenderer按钮的Click事件代码:

private void btnCIassBreakRenderer_Click(object sender, EventArgs e) {

IGeoFeatureLayer pGeoFeatureL; ITable pTable;

IClassifyGEN pClassify;

ITableHistogram pTableHistogram; IBasicHistogram pHistogram; object dataFrequency; object dataValues; double[] Classes; int ClassesCount;

IClassBreaksRenderer pClassBreaksRenderer; IHsvColor pFromColor; IHsvColor pToColor;

IAlgorithmicColorRamp pAlgorithmicCR; IEnumColors pEnumColors; bool ok; IColor pColor;

ISimpleFillSymbol pSimpleFillS; int lbreakIndex;

string strPopField = \; int numDesiredClasses = 5; IMap pMap = ; = 0;

pGeoFeatureL = (IGeoFeatureLayer)(0);

ET中必须使用IClassifyGEN这个借口定义的对象才能实现分级。 3. 唯一值着色代码添加

添加btnUniqueValueRenderer按钮的Click事件代码:

private void btnUniqueValueRenderer_Click(object sender, EventArgs e) {

IGeoFeatureLayer m_pGeoFeatureL; IUniqueValueRenderer pUniqueValueR; IFillSymbol pFillSymbol; IColor pNextUniqueColor; IEnumColors pEnumRamp; ITable pTable; int lfieldNumber; IRow pNextRow;

IRowBuffer pNextRowBuffer; ICursor pCursor;

IQueryFilter pQueryFilter; string codeValue;

IRandomColorRamp pColorRamp;

string strNameField = \; IMap pMap = ; = 0;

m_pGeoFeatureL = (IGeoFeatureLayer)(0);

pUniqueValueR = new UniqueValueRendererClass(); pTable = (ITable)m_pGeoFeatureL; lfieldNumber = (strNameField); if (lfieldNumber == -1) {

(\未能找到字段 \ + strNameField); return; }

唯一值着色代码添加 在前面代码的基础上添加引用 using stdole;

然后添加btnSymbolRenderer按钮的Click事件代码:

private void btnSymbolRenderer_Click(object sender, EventArgs e) {

IGeoFeatureLayer pGeoFeatureLayer; IFeatureLayer pFeatureLayer;

IProportionalSymbolRenderer pProportionalSymbolR; ITable pTable;

IQueryFilter pQueryFilter; ICursor pCursor;

IFillSymbol pFillSymbol;

ICharacterMarkerSymbol pCharaterMarkerS; IDataStatistics pDataStatistics; IStatisticsResults pStatisticsResult; pFontDisp;

IRotationRenderer pRotationRenderer; IMap pMap = ; = 0;

pFeatureLayer = (IGeoFeatureLayer)(0);

pGeoFeatureLayer = (IGeoFeatureLayer)pFeatureLayer; pTable = (ITable)pGeoFeatureLayer; pQueryFilter = new QueryFilterClass(); (\);

pCursor = (pQueryFilter, true);

质量图着色代码添加 这里以柱状图为例,先添加引用如下:

然后添加btnChartRenderer按钮的Click事件代码:

private void btnChartRenderer_Click(object sender, EventArgs e) {

IGeoFeatureLayer pGeoFeatureL;

IFeatureLayer pFeatureLayer; ITable pTable; ICursor pCursor;

IQueryFilter pQueryFilter; IRowBuffer pRowBuffer; int numFields = 2;

int[] fieldIndecies = new int[numFields]; int lfieldIndex; double dmaxValue; bool firstValue; double dfieldValue;

IChartRenderer pChartRenderer; IRendererFields pRendererFields; IFillSymbol pFillSymbol; IMarkerSymbol pMarkerSymbol; ISymbolArray pSymbolArray; IChartSymbol pChartSymbol;

简单着色代码添加

添加btnDotDensityRenderer按钮的Click事件代码:

private void btnDotDensityRenderer_Click(object sender, EventArgs e) {

IGeoFeatureLayer pGeoFeatureL;

IDotDensityRenderer pDotDensityRenderer; IDotDensityFillSymbol pDotDensityFillS; IRendererFields pRendererFields; ISymbolArray pSymbolArray;

ISimpleMarkerSymbol pSimpleMarkerS; string strPopField = \; IMap pMap = ;

pGeoFeatureL = (IGeoFeatureLayer)(0);

pDotDensityRenderer = new DotDensityRendererClass(); pRendererFields = (IRendererFields)pDotDensityRenderer; //添加点密度着色的字段名 (strPopField, strPopField);

pDotDensityFillS = new DotDensityFillSymbolClass(); //设置着色符号的大小和颜色 = 4;

IRgbColor color = new RgbColorClass(); = 0; = 0; = 0; = color;

//设置着色符号的背景颜色 = 239;