Esempio n. 1
0
        private void rdoPolygonPlacementMethod_SelectedIndexChanged(object sender, EventArgs e)
        {
            switch (this.rdoPolygonPlacementMethod.SelectedIndex)
            {
            case 0:
                this.pictureEdit1.Visible = true;
                this.pictureEdit2.Visible = false;
                this.pictureEdit3.Visible = false;
                break;

            case 1:
                this.pictureEdit1.Visible = false;
                this.pictureEdit2.Visible = true;
                this.pictureEdit3.Visible = false;
                break;

            case 2:
                this.pictureEdit1.Visible = false;
                this.pictureEdit2.Visible = false;
                this.pictureEdit3.Visible = true;
                break;
            }
            if (this.bool_0)
            {
                IBasicOverposterLayerProperties4 basicOverposterLayerProperties =
                    (this.iannotateLayerProperties_0 as ILabelEngineLayerProperties).BasicOverposterLayerProperties as
                    IBasicOverposterLayerProperties4;
                basicOverposterLayerProperties.PolygonPlacementMethod =
                    (esriOverposterPolygonPlacementMethod)this.rdoPolygonPlacementMethod.SelectedIndex;
            }
        }
 public void SetObjects(object @object)
 {
     this.m_pOverposterLayerProperties = @object as IBasicOverposterLayerProperties4;
     this.pointFeatureLabelCtrl1.SetObjects(@object);
     this.lineFeaturePlaceSetCtrl1.SetObjects(@object);
     this.fillFeaturePlaceCtrl1.SetObjects(@object);
 }
Esempio n. 3
0
 private void chkPlaceOnlyInsidePolygon_CheckedChanged(object sender, EventArgs e)
 {
     if (this.bool_0)
     {
         IBasicOverposterLayerProperties4 basicOverposterLayerProperties =
             (this.iannotateLayerProperties_0 as ILabelEngineLayerProperties).BasicOverposterLayerProperties as
             IBasicOverposterLayerProperties4;
         basicOverposterLayerProperties.PlaceOnlyInsidePolygon = this.chkPlaceOnlyInsidePolygon.Checked;
     }
 }
Esempio n. 4
0
 private void imageComboBoxEdit1_SelectedIndexChanged(object sender, EventArgs e)
 {
     if (this.bool_0)
     {
         IBasicOverposterLayerProperties4 basicOverposterLayerProperties =
             (this.iannotateLayerProperties_0 as ILabelEngineLayerProperties).BasicOverposterLayerProperties as
             IBasicOverposterLayerProperties4;
         IPointPlacementPriorities pointPlacementPriorities =
             basicOverposterLayerProperties.PointPlacementPriorities;
         ImageComboBoxItem item = this.imageComboBoxEdit1.Properties.Items[this.imageComboBoxEdit1.SelectedIndex];
         this.method_0(item.Value.ToString(), pointPlacementPriorities);
         basicOverposterLayerProperties.PointPlacementPriorities = pointPlacementPriorities;
     }
 }
Esempio n. 5
0
        private void btnAngles_Click(object sender, EventArgs e)
        {
            IBasicOverposterLayerProperties4 basicOverposterLayerProperties =
                (this.iannotateLayerProperties_0 as ILabelEngineLayerProperties).BasicOverposterLayerProperties as
                IBasicOverposterLayerProperties4;
            frmLabelRotateAngles angles = new frmLabelRotateAngles
            {
                Angles = basicOverposterLayerProperties.PointPlacementAngles
            };

            if (angles.ShowDialog() == DialogResult.OK)
            {
                basicOverposterLayerProperties.PointPlacementAngles = angles.Angles;
            }
        }
Esempio n. 6
0
        //设置属性相关
        private void btnPosition_Click(object sender, EventArgs e)
        {
            try
            {
                if ((m_pAnnoLayerProperties != null) && (m_pGeoFeatLayer != null))
                {
                    FrmLabelPosition FrmLabelPosition = new FrmLabelPosition();
                    FrmLabelPosition.LabelEngineLayerProperties = (ILabelEngineLayerProperties)m_pAnnoLayerProperties;
                    FrmLabelPosition.GeoFeatureLayer            = m_pGeoFeatLayer;
                    FrmLabelPosition.ShowDialog();

                    m_pNewBasicOverposterLayerProperties = FrmLabelPosition.BasicOverposterLayerProperties;
                }
            }
            catch (Exception)
            {
                //m_pDisplayInformation.DisplayInformation("在显示设置标注位置的窗体时候错误发生!", false, null, "退出");
                MessageBox.Show("在显示设置标注位置的窗体时候错误发生!", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
            }
        }
Esempio n. 7
0
        private void btnRotateField_Click(object sender, EventArgs e)
        {
            IBasicOverposterLayerProperties4 basicOverposterLayerProperties =
                (this.iannotateLayerProperties_0 as ILabelEngineLayerProperties).BasicOverposterLayerProperties as
                IBasicOverposterLayerProperties4;
            frmLableRotateField field = new frmLableRotateField
            {
                m_pFields = this.igeoFeatureLayer_0.FeatureClass.Fields,
                m_PerpendicularToAngle = basicOverposterLayerProperties.PerpendicularToAngle,
                m_RotationType         = basicOverposterLayerProperties.RotationType,
                m_RoteteField          = basicOverposterLayerProperties.RotationField
            };

            if (field.ShowDialog() == DialogResult.OK)
            {
                basicOverposterLayerProperties.PerpendicularToAngle = field.m_PerpendicularToAngle;
                basicOverposterLayerProperties.RotationType         = field.m_RotationType;
                basicOverposterLayerProperties.RotationField        = field.m_RoteteField;
            }
        }
Esempio n. 8
0
        /// <summary>
        /// ÉèÖÃÊôÐÔ±ê×¢
        /// </summary>
        /// <param name="pGeoFeatureLayer">ͼ²ã</param>
        /// <param name="vLabelField">ÊôÐÔ×Ö¶Î</param>
        /// <param name="vMapFrameScale">ͼ²ã±ÈÀý³ß</param>
        /// <param name="vMapRefrenceScale">²Î¿¼±ÈÀý³ß</param>
        private void SetLableToGeoFeatureLayer(IGeoFeatureLayer pGeoFeatureLayer, string vLabelField, int vMapFrameScale, double vMapRefrenceScale)
        {
            IAnnotateLayerPropertiesCollection pAnnoLayerProperCol = pGeoFeatureLayer.AnnotationProperties;
            IAnnotateLayerProperties           pAnnoLayerProper;
            IElementCollection placedElements;
            IElementCollection unplacedElements;

            //µÃµ½µ±Ç°²ãµÄµ±Ç°±ê×¢ÊôÐÔ
            pAnnoLayerProperCol.QueryItem(0, out pAnnoLayerProper, out placedElements, out unplacedElements);
            ILabelEngineLayerProperties      pLabelEngineLayerProper     = (ILabelEngineLayerProperties)pAnnoLayerProper;
            IBasicOverposterLayerProperties4 pBasicOverposterLayerProper = (IBasicOverposterLayerProperties4)pLabelEngineLayerProper.BasicOverposterLayerProperties;
            //±ê×¢µÄ×ÖÌå
            ITextSymbol pTextSymbol = pLabelEngineLayerProper.Symbol;
            IRgbColor   pRGBColor   = new RgbColorClass();

            pRGBColor.Red     = 0;
            pRGBColor.Blue    = 255;
            pRGBColor.Green   = 0;
            pTextSymbol.Color = pRGBColor;
            stdole.StdFont pStdFont = new stdole.StdFontClass();
            IFontDisp      pFont    = (IFontDisp)pStdFont;

            pFont.Name = "ËÎÌå";
            if (vMapRefrenceScale != 0)
            {
                double size = (vMapFrameScale / 3) * vMapFrameScale / vMapRefrenceScale;
                pFont.Size = (decimal)size;
            }
            pTextSymbol.Font = pFont;
            //±ê×¢ÄÚÈÝ
            pLabelEngineLayerProper.Expression          = "[" + vLabelField + "]";
            pBasicOverposterLayerProper.NumLabelsOption = esriBasicNumLabelsOption.esriOneLabelPerPart;
            //±ê×¢µÄ·½ÏòÐÅÏ¢
            pBasicOverposterLayerProper.PolygonPlacementMethod = esriOverposterPolygonPlacementMethod.esriAlwaysHorizontal;
            //±ê×¢µÄÓ뼸ºÎͼÐεĴóС¹Øϵ
            pBasicOverposterLayerProper.PlaceOnlyInsidePolygon = false;
            //¿ªÆô±ê×¢
            pGeoFeatureLayer.DisplayAnnotation = true;
        }
Esempio n. 9
0
        private void rdoPointPlacementMethod_SelectedIndexChanged(object sender, EventArgs e)
        {
            switch (this.rdoPointPlacementMethod.SelectedIndex)
            {
            case 0:
                this.imageComboBoxEdit1.Enabled = true;
                this.btnRotateField.Enabled     = false;
                this.btnAngles.Enabled          = false;
                break;

            case 1:
                this.imageComboBoxEdit1.Enabled = false;
                this.btnRotateField.Enabled     = false;
                this.btnAngles.Enabled          = false;
                break;

            case 2:
                this.imageComboBoxEdit1.Enabled = false;
                this.btnRotateField.Enabled     = false;
                this.btnAngles.Enabled          = true;
                break;

            case 3:
                this.imageComboBoxEdit1.Enabled = false;
                this.btnRotateField.Enabled     = true;
                this.btnAngles.Enabled          = false;
                break;
            }
            if (this.bool_0)
            {
                IBasicOverposterLayerProperties4 basicOverposterLayerProperties =
                    (this.iannotateLayerProperties_0 as ILabelEngineLayerProperties).BasicOverposterLayerProperties as
                    IBasicOverposterLayerProperties4;
                basicOverposterLayerProperties.PointPlacementMethod =
                    (esriOverposterPointPlacementMethod)this.rdoPointPlacementMethod.SelectedIndex;
            }
        }
Esempio n. 10
0
 private void method_0()
 {
     if (((this.igeoFeatureLayer_0 != null) && (this.iannotateLayerProperties_0 != null)) &&
         (this.igeoFeatureLayer_0.FeatureClass != null))
     {
         this.bool_0 = false;
         IFields fields = this.igeoFeatureLayer_0.FeatureClass.Fields;
         for (int i = 0; i < fields.FieldCount; i++)
         {
             IField field = fields.get_Field(i);
             if (((((field.Type == esriFieldType.esriFieldTypeDate) ||
                    (field.Type == esriFieldType.esriFieldTypeDouble)) ||
                   ((field.Type == esriFieldType.esriFieldTypeGlobalID) ||
                    (field.Type == esriFieldType.esriFieldTypeGUID))) ||
                  (((field.Type == esriFieldType.esriFieldTypeInteger) ||
                    (field.Type == esriFieldType.esriFieldTypeOID)) ||
                   ((field.Type == esriFieldType.esriFieldTypeSingle) ||
                    (field.Type == esriFieldType.esriFieldTypeSmallInteger)))) ||
                 (field.Type == esriFieldType.esriFieldTypeString))
             {
                 this.cboFields.Properties.Items.Add(field.AliasName);
             }
         }
         this.string_0 = (this.iannotateLayerProperties_0 as ILabelEngineLayerProperties).Expression.Trim();
         this.bool_1   = (this.iannotateLayerProperties_0 as ILabelEngineLayerProperties).IsExpressionSimple;
         this.iannotationExpressionEngine_0 =
             (this.iannotateLayerProperties_0 as ILabelEngineLayerProperties).ExpressionParser;
         if (this.string_0.IndexOf("[", 1) != -1)
         {
             this.cboFields.Enabled = false;
             this.cboFields.Text    = "表达式";
         }
         else
         {
             fields = this.igeoFeatureLayer_0.FeatureClass.Fields;
             string name  = this.string_0.Substring(1, this.string_0.Length - 2).Trim();
             int    index = fields.FindField(name);
             if (index == -1)
             {
                 this.cboFields.Enabled = false;
                 this.cboFields.Text    = "表达式";
             }
             else
             {
                 this.cboFields.Enabled = true;
                 this.cboFields.Text    = fields.get_Field(index).AliasName;
             }
         }
         this.symbolItem.ScaleRatio = 0.5;
         this.itextSymbol_0         = (this.iannotateLayerProperties_0 as ILabelEngineLayerProperties).Symbol;
         this.symbolItem.Symbol     = this.itextSymbol_0;
         this.symbolItem.Invalidate();
         IBasicOverposterLayerProperties4 basicOverposterLayerProperties =
             (this.iannotateLayerProperties_0 as ILabelEngineLayerProperties).BasicOverposterLayerProperties as
             IBasicOverposterLayerProperties4;
         this.rdoPolygonPlacementMethod.SelectedIndex =
             (int)basicOverposterLayerProperties.PolygonPlacementMethod;
         this.chkPlaceOnlyInsidePolygon.Checked = basicOverposterLayerProperties.PlaceOnlyInsidePolygon;
         this.rdoPolygonPlacementMethod_SelectedIndexChanged(this, new EventArgs());
         this.bool_0 = true;
     }
 }
Esempio n. 11
0
 public void SetObjects(object @object)
 {
     this.m_OverLayerProperty = @object as IBasicOverposterLayerProperties4;
 }
Esempio n. 12
0
        /// <summary>
        /// 从图层对应节点的XML中读取当前层的标注设置
        /// </summary>
        /// <param name="pAnnoLayerProper"></param>
        public static void ReadLabelConfigFromXML(ref IAnnotateLayerProperties pAnnoLayerProper, XmlNode nodeLayerXml, string pFeatureType)
        {
            //设置标注的相关信息             ;
            ILabelEngineLayerProperties pLabelEngineLayerProperties = null;

            if (pAnnoLayerProper == null)
            {
                pLabelEngineLayerProperties = new LabelEngineLayerProperties() as ILabelEngineLayerProperties;
                pAnnoLayerProper            = pLabelEngineLayerProperties as IAnnotateLayerProperties;
            }
            else
            {
                pLabelEngineLayerProperties = pAnnoLayerProper as ILabelEngineLayerProperties;
            }

            IAnnotationExpressionEngine pAnnoVBScriptEngine = new AnnotationVBScriptEngineClass();

            pLabelEngineLayerProperties.ExpressionParser = pAnnoVBScriptEngine;

            IBasicOverposterLayerProperties4 pBasicOverposterLayerProperties = pLabelEngineLayerProperties.BasicOverposterLayerProperties as IBasicOverposterLayerProperties4;

            switch (pFeatureType)
            {
            case "esriGeometryPoint":
                pBasicOverposterLayerProperties.FeatureType = esriBasicOverposterFeatureType.esriOverposterPoint;
                break;

            case "esriGeometryPolyline":
                pBasicOverposterLayerProperties.FeatureType = esriBasicOverposterFeatureType.esriOverposterPolyline;
                break;

            case "esriGeometryPolygon":
                pBasicOverposterLayerProperties.FeatureType = esriBasicOverposterFeatureType.esriOverposterPolygon;
                break;
            }

            ITextSymbol pTextSymbol = pLabelEngineLayerProperties.Symbol;
            IFontDisp   pFont       = pTextSymbol.Font;

            foreach (XmlNode nd in nodeLayerXml)
            {
                if (nd.Name == "AttrLabel")
                {
                    //读取共同的标注设置信息
                    pFont.Name = nd.Attributes["FontName"].Value;
                    pFont.Size = Convert.ToDecimal(nd.Attributes["FontSize"].Value.ToLower());
                    if (nd.Attributes["FontBold"].Value != "")
                    {
                        pFont.Bold = Convert.ToBoolean(nd.Attributes["FontBold"].Value.ToLower());
                    }
                    if (nd.Attributes["FontItalic"].Value != "")
                    {
                        pFont.Italic = Convert.ToBoolean(nd.Attributes["FontItalic"].Value.ToLower());
                    }
                    if (nd.Attributes["FontUnderLine"].Value != "")
                    {
                        pFont.Underline = Convert.ToBoolean(nd.Attributes["FontUnderLine"].Value.ToLower());
                    }
                    pTextSymbol.Font = pFont;
                    IColor pColor = new RgbColorClass();
                    if (nd.Attributes["FontBoldColor"].Value != "")
                    {
                        pColor.RGB = Convert.ToInt32(nd.Attributes["FontBoldColor"].Value);
                    }
                    else
                    {
                        pColor.RGB = 36054566;
                        //pColor.Green = 0;
                        //pColor.Blue = 0;
                        pTextSymbol.Color = pColor as IColor;
                    }
                    pTextSymbol.Color = pColor;


                    if (nd.Attributes["Expression"].Value != "")
                    {
                        pLabelEngineLayerProperties.Expression = "[" + nd.Attributes["Expression"].Value + "]";
                    }

                    if (nd.Attributes["MaxScale"].Value != "" && nd.Attributes["MaxScale"].Value != null)
                    {
                        pAnnoLayerProper.AnnotationMaximumScale = Convert.ToDouble(nd.Attributes["MaxScale"].Value);
                    }
                    if (nd.Attributes["MinScale"].Value != "" && nd.Attributes["MinScale"].Value != null)
                    {
                        pAnnoLayerProper.AnnotationMinimumScale = Convert.ToDouble(nd.Attributes["MinScale"].Value);
                    }

                    if (nd.Attributes["NumLabelsOption"].Value == "esriOneLabelPerName")
                    {
                        pBasicOverposterLayerProperties.NumLabelsOption = esriBasicNumLabelsOption.esriOneLabelPerName;
                    }
                    else if (nd.Attributes["NumLabelsOption"].Value == "esriOneLabelPerPart")
                    {
                        pBasicOverposterLayerProperties.NumLabelsOption = esriBasicNumLabelsOption.esriOneLabelPerPart;
                    }
                    else if (nd.Attributes["NumLabelsOption"].Value == "esriOneLabelPerShape")
                    {
                        pBasicOverposterLayerProperties.NumLabelsOption = esriBasicNumLabelsOption.esriOneLabelPerShape;
                    }
                    //下面按不同要素类型读取不同的标注设置信息
                    //点要素
                    if (pBasicOverposterLayerProperties.FeatureType == esriBasicOverposterFeatureType.esriOverposterPoint)
                    {
                        pBasicOverposterLayerProperties.PointPlacementOnTop = Convert.ToBoolean(nd.Attributes["PointPlacementOnTop"].Value.ToLower());
                        if (nd.Attributes["PointPlacementMethod"].Value == "esriAroundPoint")
                        {
                            pBasicOverposterLayerProperties.PointPlacementMethod = esriOverposterPointPlacementMethod.esriAroundPoint;

                            IPointPlacementPriorities pPointPlacementPriorities = pBasicOverposterLayerProperties.PointPlacementPriorities;
                            string strPlacement;
                            try
                            {
                                //读取标注位置的设置
                                strPlacement = nd.Attributes["PointPlacementPriorities"].Value;
                                SetPlacementPriotities(pPointPlacementPriorities, strPlacement);
                                pBasicOverposterLayerProperties.PointPlacementPriorities = pPointPlacementPriorities;
                            }
                            catch
                            {
                                //MessageBox.Show("该图层XML中不存在PointPlacementPriorities属性!");
                            }
                        }
                        else if (nd.Attributes["PointPlacementMethod"].Value == "esriOnTopPoint")
                        {
                            pBasicOverposterLayerProperties.PointPlacementMethod = esriOverposterPointPlacementMethod.esriOnTopPoint;
                        }
                        else if (nd.Attributes["PointPlacementMethod"].Value == "esriSpecifiedAngles")
                        {
                            double[] dArray = new double[1];
                            string   sAngle = nd.Attributes["PointPlacementAngles"].Value;
                            if (sAngle.Contains(",") == false)
                            {
                                dArray[0] = Convert.ToDouble(sAngle);
                            }
                            else
                            {
                                string[] sAngles = sAngle.Split(new char[] { ',' });
                                dArray = new double[sAngles.Length];
                                for (int i = 0; i < sAngles.Length; i++)
                                {
                                    dArray[i] = Convert.ToDouble(sAngles[i]);
                                }
                            }
                            pBasicOverposterLayerProperties.PointPlacementAngles = dArray;
                        }
                        else if (nd.Attributes["PointPlacementMethod"].Value == "esriRotationField")
                        {
                            pBasicOverposterLayerProperties.PointPlacementMethod = esriOverposterPointPlacementMethod.esriRotationField;
                            pBasicOverposterLayerProperties.RotationField        = nd.Attributes["RotationField"].Value;
                            if (nd.Attributes["RotationType"].Value == "esriRotateLabelArithmetic")
                            {
                                pBasicOverposterLayerProperties.RotationType = esriLabelRotationType.esriRotateLabelArithmetic;
                            }
                            else if (nd.Attributes["RotationType"].Value == "esriRotateLabelGeographic")
                            {
                                pBasicOverposterLayerProperties.RotationType = esriLabelRotationType.esriRotateLabelGeographic;
                            }

                            pBasicOverposterLayerProperties.PerpendicularToAngle = Convert.ToBoolean(nd.Attributes["PerpendicularToAngle"].Value);
                        }
                    }
                    //线要素
                    else if (pBasicOverposterLayerProperties.FeatureType == esriBasicOverposterFeatureType.esriOverposterPolyline)
                    {
                        ILineLabelPosition pLineLabelPosition = pBasicOverposterLayerProperties.LineLabelPosition;
                        if (nd.Attributes["Above"] != null)
                        {
                            pLineLabelPosition.Above = Convert.ToBoolean(nd.Attributes["Above"].Value);
                        }
                        if (nd.Attributes["AtEnd"] != null)
                        {
                            pLineLabelPosition.AtEnd = Convert.ToBoolean(nd.Attributes["AtEnd"].Value);
                        }
                        if (nd.Attributes["AtStart"] != null)
                        {
                            pLineLabelPosition.AtStart = Convert.ToBoolean(nd.Attributes["AtStart"].Value);
                        }
                        if (nd.Attributes["Below"] != null)
                        {
                            pLineLabelPosition.Below = Convert.ToBoolean(nd.Attributes["Below"].Value);
                        }
                        if (nd.Attributes["Horizontal"] != null)
                        {
                            pLineLabelPosition.Horizontal = Convert.ToBoolean(nd.Attributes["Horizontal"].Value);
                        }
                        if (nd.Attributes["InLine"] != null)
                        {
                            pLineLabelPosition.InLine = Convert.ToBoolean(nd.Attributes["InLine"].Value);
                        }
                        if (nd.Attributes["Left"] != null)
                        {
                            pLineLabelPosition.Left = Convert.ToBoolean(nd.Attributes["Left"].Value);
                        }
                        if (nd.Attributes["Offset"] != null)
                        {
                            pLineLabelPosition.Offset = Convert.ToDouble(nd.Attributes["Offset"].Value);
                        }
                        if (nd.Attributes["OnTop"] != null)
                        {
                            pLineLabelPosition.OnTop = Convert.ToBoolean(nd.Attributes["OnTop"].Value);
                        }
                        if (nd.Attributes["Parallel"] != null)
                        {
                            pLineLabelPosition.Parallel = Convert.ToBoolean(nd.Attributes["Parallel"].Value);
                        }
                        if (nd.Attributes["Perpendicular"] != null)
                        {
                            pLineLabelPosition.Perpendicular = Convert.ToBoolean(nd.Attributes["Perpendicular"].Value);
                        }
                        if (nd.Attributes["ProduceCurvedLabels"] != null)
                        {
                            pLineLabelPosition.ProduceCurvedLabels = Convert.ToBoolean(nd.Attributes["ProduceCurvedLabels"].Value);
                        }
                        if (nd.Attributes["Right"] != null)
                        {
                            pLineLabelPosition.Right = Convert.ToBoolean(nd.Attributes["Right"].Value);
                        }
                    }
                    //面要素
                    else if (pBasicOverposterLayerProperties.FeatureType == esriBasicOverposterFeatureType.esriOverposterPolygon)
                    {
                        if (nd.Attributes["PolygonPlacementMethod"].Value == "esriAlwaysHorizontal")
                        {
                            pBasicOverposterLayerProperties.PolygonPlacementMethod = esriOverposterPolygonPlacementMethod.esriAlwaysHorizontal;
                        }
                        else if (nd.Attributes["PolygonPlacementMethod"].Value == "esriAlwaysStraight")
                        {
                            pBasicOverposterLayerProperties.PolygonPlacementMethod = esriOverposterPolygonPlacementMethod.esriAlwaysStraight;
                        }
                        else if (nd.Attributes["PolygonPlacementMethod"].Value == "esriMixedStrategy")
                        {
                            pBasicOverposterLayerProperties.PolygonPlacementMethod = esriOverposterPolygonPlacementMethod.esriMixedStrategy;
                        }

                        pBasicOverposterLayerProperties.PlaceOnlyInsidePolygon = Convert.ToBoolean(nd.Attributes["PlaceOnlyInsidePolygon"].Value);
                    }
                }
            }
        }
Esempio n. 13
0
        private void FrmLabelPosition_Load(object sender, EventArgs e)
        {
            IClone  pClone;
            IFields pFields;
            IField  pField;

            //标识是否找到了数字型的字段
            bool bHasFindNumbericField;
            int  i;

            try
            {
                if (m_pBasicOverposterLayerProperties == null)
                {
                    return;
                }

                //复制一份传入的 BasicOverposterLayerProperties
                pClone = (IClone)m_pBasicOverposterLayerProperties;
                m_pBasicOverposterLayerPropertiesOut = (IBasicOverposterLayerProperties4)pClone.Clone();

                //对所有的标注层的初始化(重复标注的处理)
                if (m_pBasicOverposterLayerProperties.NumLabelsOption == esriBasicNumLabelsOption.esriOneLabelPerName)
                {
                    optRemoveDoubleLable.Checked = true;        //移除值重复的标注
                }
                else if (m_pBasicOverposterLayerProperties.NumLabelsOption == esriBasicNumLabelsOption.esriOneLabelPerPart)
                {
                    optPerFeature.Checked = true;               //每个地物只有一个标注
                }
                else
                {
                    optPerPart.Checked = true;                  //每个几何图形有一个标注
                }

                //显示要素和标注的重要性
                //要素重要性
                switch ((int)m_pBasicOverposterLayerPropertiesOut.FeatureWeight)
                {
                case 0:
                    OptionF1.Checked = false;
                    OptionF2.Checked = false;
                    OptionF3.Checked = false;
                    OptionF0.Checked = true;
                    break;

                case 1:
                    OptionF1.Checked = false;
                    OptionF2.Checked = false;
                    OptionF3.Checked = true;
                    OptionF0.Checked = false;
                    break;

                case 2:
                    OptionF1.Checked = false;
                    OptionF2.Checked = true;
                    OptionF3.Checked = false;
                    OptionF0.Checked = false;
                    break;

                case 3:
                    OptionF1.Checked = true;
                    OptionF2.Checked = false;
                    OptionF3.Checked = false;
                    OptionF0.Checked = false;
                    break;

                default:
                    break;
                }

                //标注重要性
                switch ((int)m_pBasicOverposterLayerPropertiesOut.LabelWeight)
                {
                case 0:
                    OptionL1.Checked = false;
                    OptionL2.Checked = false;
                    OptionL3.Checked = false;
                    break;

                case 1:
                    OptionL1.Checked = false;
                    OptionL2.Checked = false;
                    OptionL3.Checked = true;
                    break;

                case 2:
                    OptionL1.Checked = false;
                    OptionL2.Checked = true;
                    OptionL3.Checked = false;
                    break;

                case 3:
                    OptionL1.Checked = true;
                    OptionL2.Checked = false;
                    OptionL3.Checked = false;
                    break;

                default:
                    break;
                }

                if (m_pBasicOverposterLayerProperties != null)
                {
                    //下面是标注层是线时的初始化
                    if (m_pBasicOverposterLayerProperties.FeatureType == esriBasicOverposterFeatureType.esriOverposterPolyline)
                    {
                        InitialGroupBox("grpLineSet");
                        //线框架初始化的函数
                        InitialLinePosition();
                    }

                    //面标注层的处理
                    else if (m_pBasicOverposterLayerProperties.FeatureType == esriBasicOverposterFeatureType.esriOverposterPolygon)
                    {
                        InitialGroupBox("grpRegionSet");

                        if (m_pBasicOverposterLayerProperties.PlaceOnlyInsidePolygon == true)
                        {
                            chkLabelInRegion.Checked = true;                //标注要位于多边形内
                        }
                        else
                        {
                            chkLabelInRegion.Checked = false;
                        }

                        if (m_pBasicOverposterLayerProperties.PolygonPlacementMethod == esriOverposterPolygonPlacementMethod.esriAlwaysHorizontal)
                        {
                            optHorizatalOrentation.Checked = true;          //总是水平
                        }
                        else if (m_pBasicOverposterLayerProperties.PolygonPlacementMethod == esriOverposterPolygonPlacementMethod.esriAlwaysStraight)
                        {
                            optRegionOrentation.Checked = true;             //与面的方向一致
                        }
                        else
                        {
                            optOptimizationOrentation.Checked = true;       //最优方向
                        }
                    }
                    //点标注图层的处理
                    else
                    {
                        InitialGroupBox("grpPointSet");

                        //查看是否存在数字型字段
                        pFields = m_pGeoFeatLayer.FeatureClass.Fields;
                        bHasFindNumbericField = false;

                        for (i = 0; i <= pFields.FieldCount - 1; i++)
                        {
                            pField = pFields.get_Field(i);
                            if ((pField.Type == esriFieldType.esriFieldTypeDouble) || (pField.Type == esriFieldType.esriFieldTypeInteger) ||
                                (pField.Type == esriFieldType.esriFieldTypeSingle) || (pField.Type == esriFieldType.esriFieldTypeSmallInteger))
                            {
                                bHasFindNumbericField = true;
                                break;
                            }
                        }

                        //如果不存在数值型字段则依字段进行控制角度的控钮灰掉
                        if (bHasFindNumbericField == false)
                        {
                            optRotationField.Enabled    = false;
                            this.btnChooseField.Enabled = false;
                        }

                        //初始化点标注类型
                        if (m_pBasicOverposterLayerProperties.PointPlacementMethod == esriOverposterPointPlacementMethod.esriRotationField)
                        {
                            optRotationField.Checked = true;        //指向某字段确定的特定方向
                            PntAngleChoiseEnbal(false, true);
                        }
                        else if (m_pBasicOverposterLayerProperties.PointPlacementMethod == esriOverposterPointPlacementMethod.esriAroundPoint)
                        {
                            PntAngleChoiseEnbal(false, false);
                            optAroundPoint.Checked = true;          //水平方向
                        }
                        else if (m_pBasicOverposterLayerProperties.PointPlacementMethod == esriOverposterPointPlacementMethod.esriOnTopPoint)
                        {
                            PntAngleChoiseEnbal(false, false);
                            optOnTopPoint.Checked = true;           //位于点的正上方(覆盖点)
                        }
                        else if (m_pBasicOverposterLayerProperties.PointPlacementMethod == esriOverposterPointPlacementMethod.esriSpecifiedAngles)
                        {
                            optSpecifiedAngles.Checked = true;      //指向特定的方向
                            PntAngleChoiseEnbal(true, false);
                        }
                        else
                        {
                            optAroundPoint.Checked = true;
                            PntAngleChoiseEnbal(false, false);
                        }
                    }
                }
            }
            catch (Exception)
            {
                //g_ErrorHandler.DisplayInformation(ex.Message, false, "确定");
            }
        }
Esempio n. 14
0
        private void FrmLabelDesign_Load(object sender, EventArgs e)
        {
            IGeoFeatureLayer geoFeatureLayer              = (IGeoFeatureLayer)pLayer;
            IAnnotateLayerPropertiesCollection  pAnnColl  = geoFeatureLayer.AnnotationProperties;
            IAnnotateLayerPropertiesCollection2 pAnnColl2 = (IAnnotateLayerPropertiesCollection2)pAnnColl;
            IAnnotateLayerProperties            pAnnProp  = pAnnColl2.get_Properties(0);
            ILabelEngineLayerProperties         pLable    = (ILabelEngineLayerProperties)pAnnProp;
            IBasicOverposterLayerProperties4    pBasic    = (IBasicOverposterLayerProperties4)pLable.BasicOverposterLayerProperties;

            //IPointPlacementPriorities pPlace = pBasic.PointPlacementPriorities;

            chklabel.Checked = pAnnProp.DisplayAnnotation;
            ITable  pTable  = (ITable)pLayer;
            IFields pFields = pTable.Fields;

            for (int i = 0; i < pFields.FieldCount; i++)
            {
                if (pFields.Field[i].Name != "Shape")
                {
                    cmbfields.Items.Add(pFields.Field[i].Name);
                }
            }
            //if (chklabel.Checked)
            //{
            //    cmbfields.Text = pLable.Expression;
            //}
            //else
            //{
            //    cmbfields.SelectedIndex = 0;
            //}
            cmbfields.Text = pLable.Expression;

            InstalledFontCollection pFontCollection = new InstalledFontCollection();

            FontFamily[] pFontFamily = pFontCollection.Families;
            for (int i = 0; i < pFontFamily.Length; i++)
            {
                string pFontName = pFontFamily[i].Name;
                this.cmbfont.Items.Add(pFontName);
            }

            //标注方向
            ILineLabelPosition pLineLabelPosition = pBasic.LineLabelPosition;

            if (pLineLabelPosition != null)
            {
                if (pLineLabelPosition.Horizontal)  //水平
                {
                    radioBtnHorizontal.Checked    = true;
                    radioBtnParallel.Checked      = false;
                    radioBtnPerpendicular.Checked = false;
                }
                if (pLineLabelPosition.Perpendicular)//垂直
                {
                    radioBtnHorizontal.Checked    = false;
                    radioBtnParallel.Checked      = false;
                    radioBtnPerpendicular.Checked = true;
                }
                if (pLineLabelPosition.Parallel)//平行
                {
                    radioBtnHorizontal.Checked    = false;
                    radioBtnParallel.Checked      = true;
                    radioBtnPerpendicular.Checked = false;
                }
            }

            if (pLable.Symbol != null)
            {
                pTextSymbol = pLable.Symbol;
                stdole.IFontDisp pFont = pTextSymbol.Font;
                symbolcolor.SelectedColor = ClsGDBDataCommon.IColorToColor(pTextSymbol.Color);
                //cmbfont.Text = pTextSymbol.Font.Name;
                for (int i = 0; i < cmbfont.Items.Count; i++)
                {
                    if (cmbfont.Items[i].ToString() == pTextSymbol.Font.Name)
                    {
                        cmbfont.SelectedIndex = i;
                    }
                }
                cmbsize.Text = pTextSymbol.Size.ToString();
                if (pFont.Bold == true)
                {
                    toolBtnBold.Checked = true;
                }
                else
                {
                    toolBtnBold.Checked = false;
                }
                if (pFont.Italic == true)
                {
                    toolBtnIntend.Checked = true;
                }
                else
                {
                    toolBtnIntend.Checked = false;
                }
                if (pFont.Underline == true)
                {
                    toolBtnUnderline.Checked = true;
                }
                else
                {
                    toolBtnUnderline.Checked = false;
                }
                if (pFont.Strikethrough == true)
                {
                    toolBtnStrikethrough.Checked = true;
                }
                else
                {
                    toolBtnStrikethrough.Checked = false;
                }
            }
            else
            {
                symbolcolor.SelectedColor = Color.Black;
                cmbfont.SelectedIndex     = cmbfont.Items.Count - 9;
                cmbsize.Text                 = "8";
                toolBtnBold.Checked          = false;
                toolBtnIntend.Checked        = false;
                toolBtnUnderline.Checked     = false;
                toolBtnStrikethrough.Checked = false;
            }
        }