public virtual void ApplySizeTheme(IDataSizeTheme theme) { if (LayerData.GeoType == VectorLayer.GEOTYPE_POINT) { for (int i = 0; i < Features.Count; i++) { var feature = LayerData.Features[i]; var shape = Features[feature]; double size = MapControl.Current.GetMagFactor(MapControl.Current.InitialScale) * theme.GetSize(feature); ElementPositionHelper.CenterElementInCanvas(shape, size, size); } } else if (LayerData.GeoType == VectorLayer.GEOTYPE_LINEAR) { // done: 流量图 for (int i = 0; i < Features.Count; i++) { var feature = LayerData.Features[i]; var shape = Features[feature]; double size = theme.GetSize(feature); (shape as Polyline).StrokeThickness = size; } } _hasSizeTheme = true; _sizeTheme = theme; }
protected virtual void AddSpot(Point pos, IFeature f) { var result = new Ellipse { Width = LayerStyle.SpotSize, Height = LayerStyle.SpotSize, Stroke = LayerStyle.Stroke, StrokeThickness = LayerStyle.StrokeWeight, Fill = LayerStyle.GetFill() }; ElementPositionHelper.SetElementDesignPosition(result, pos); ElementPositionHelper.CenterElementInCanvas(result, LayerStyle.SpotSize, LayerStyle.SpotSize); this.AddFeatureChildren(f, result); }
public virtual void ClearSizeTheme() { for (int i = 0; i < Features.Count; i++) { var feature = LayerData.Features[i]; var shape = Features[feature]; if (LayerData.GeoType == VectorLayer.GEOTYPE_POINT) { double size = MapControl.Current.GetMagFactor(MapControl.Current.InitialScale) * LayerStyle.SpotSize; ElementPositionHelper.CenterElementInCanvas(shape, size, size); } else if (LayerData.GeoType == VectorLayer.GEOTYPE_LINEAR) { double size = MapControl.Current.GetMagFactor(MapControl.Current.InitialScale) * LayerStyle.StrokeWeight; (shape as Polyline).StrokeThickness = size; } } _hasSizeTheme = false; }
public virtual void SetMagFactor(double magFactor) { if (this.LayerData.GeoType == VectorLayer.GEOTYPE_POINT && !_hasSizeTheme) { foreach (Ellipse ep in this.Features.Values) { double size = this.LayerStyle.SpotSize * magFactor; ep.StrokeThickness = this.LayerStyle.StrokeWeight * magFactor; ElementPositionHelper.CenterElementInCanvas(ep, size, size); } } else if (this.LayerData.GeoType == VectorLayer.GEOTYPE_LINEAR && !IsRoad()) { if (_hasSizeTheme) { foreach (var feature in this.Features) { feature.Value.StrokeThickness = _sizeTheme.GetSize(feature.Key) * magFactor; } } else { foreach (var poly in this.Features.Values) { poly.StrokeThickness = this.LayerStyle.StrokeWeight * magFactor; } } } else if (this.LayerData.GeoType == VectorLayer.GEOTYPE_REGION) { foreach (Polygon poly in this.Features.Values) { poly.StrokeThickness = this.LayerStyle.StrokeWeight * magFactor; } } }