/// <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; }
/// <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); } }