Exemplo n.º 1
0
 /// <summary>
 /// 出图的元素信息
 /// </summary>
 /// <param name="name">元素名称或元素文本标识</param>
 /// <param name="type">元素类别</param>
 /// <param name="value">元素内容</param>
 /// <param name="setValueType">表示设置元素的哪一类属性</param>
 public ElementInfo(string name, EPageElementType type, object value, EElementValueType setValueType = EElementValueType.Text)
 {
     Name      = name;
     Type      = type;
     Value     = value;
     ValueType = setValueType;
 }
Exemplo n.º 2
0
        /// <summary>
        /// 设置元素的属性值
        /// </summary>
        /// <param name="elements">需要设置属性值的同一类元素</param>
        /// <param name="valueType">表示设置哪一类元素属性</param>
        /// <param name="value">元素的属性值</param>
        protected virtual void SetElementsValue(IEnumerable <IElement> elements, EElementValueType valueType, object value)
        {
            switch (valueType)
            {
            case EElementValueType.Name:
                foreach (var element in elements)
                {
                    ((IElementProperties)element).Name = value.ToString();
                }
                break;

            case EElementValueType.Text:
                foreach (var element in elements)
                {
                    if (element is ITextElement textElemet)
                    {
                        textElemet.Text = value.ToString();
                    }
                }
                break;

            case EElementValueType.Size:
                throw new NotImplementedException();

            case EElementValueType.Location:
                if (value is IPoint point)
                {
                    foreach (var element in elements)
                    {
                        element.Geometry = point;
                    }
                }
                else if (value is double[] xyPair)
                {
                    IPoint pt = new PointClass {
                        X = xyPair[0], Y = xyPair[1]
                    };
                    foreach (var element in elements)
                    {
                        element.Geometry = pt;
                    }
                }
                else if (value is System.Drawing.Point sysPoint)
                {
                    IPoint pt = new PointClass {
                        X = sysPoint.X, Y = sysPoint.Y
                    };
                    foreach (var element in elements)
                    {
                        element.Geometry = pt;
                    }
                }
                break;

            case EElementValueType.Anchor:
                if (Enum.TryParse <esriAnchorPointEnum>(value.ToString(), out var eValue))
                {
                    foreach (var element in elements)
                    {
                        ((IElementProperties3)element).AnchorPoint = eValue;
                    }
                }
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(valueType), valueType, null);
            }
        }