/// <summary> /// 绘制椭圆 /// </summary> /// <params name="pEnvelope"></params> public void DrawEllipse(IEnvelope pEnvelope) { IFeatureLayer pFeatureLayer = m_pCurrentLayer as IFeatureLayer; IFeatureClass pFeatureClass = pFeatureLayer.FeatureClass; IConstructEllipticArc constructEllipticArc = new EllipticArcClass(); constructEllipticArc.ConstructEnvelope(pEnvelope); IEllipticArc ellipse = constructEllipticArc as IEllipticArc; ISegment segment = ellipse as ISegment; ISegmentCollection pPolyline = new Polyline() as ISegmentCollection; object Missing = Type.Missing; pPolyline.AddSegment(segment, ref Missing, ref Missing); IGeometry poly = pPolyline as IGeometry; IFeature pCircleFeature = pFeatureClass.CreateFeature(); pCircleFeature.Shape = poly as PolylineClass; pCircleFeature.Store(); //局部刷新 IInvalidArea pInvalidArea = new InvalidAreaClass(); pInvalidArea.Add(poly); pInvalidArea.Display = m_hookHelper.ActiveView.ScreenDisplay; pInvalidArea.Invalidate((short)esriScreenCache.esriAllScreenCaches); }
public override void OnMouseMove(int Button, int Shift, int X, int Y) { m_pMovePoint = m_hookHelper.ActiveView.ScreenDisplay.DisplayTransformation.ToMapPoint(X, Y); m_pMovePoint = GIS.GraphicEdit.SnapSetting.getSnapPoint(m_pMovePoint); if (m_lMouseDownCount == 1) { m_bCreated = false; IEnvelope pEnv = new EnvelopeClass(); pEnv.UpperLeft = m_pFirstPoint; pEnv.LowerRight = m_pMovePoint; IConstructEllipticArc pEllipArc = new EllipticArcClass(); pEllipArc.ConstructEnvelope(pEnv); m_pEllipticArc = pEllipArc as IEllipticArc; m_hookHelper.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewForeground, null, null); } DataEditCommon.g_pAxMapControl.Focus(); }
public void CanTestEllipticArc() { IFeatureClass fc = CreateLineClass(_testWs, "CanTestEllipticArc"); IFeature row1 = fc.CreateFeature(); IConstructEllipticArc arc = new EllipticArcClass(); arc.ConstructEnvelope(GeometryFactory.CreateEnvelope(0, 0, 100, 10)); row1.Shape = CreatePolyLine((ISegment)arc); row1.Store(); var test = new QaMinSegAngle(fc, 0.1, true); var runner = new QaContainerTestRunner(1000, test); runner.Execute(); Assert.AreEqual(0, runner.Errors.Count); }
private void DrawEllipse() { IEnvelope envelope = this.m_mapControl.TrackRectangle(); if (!envelope.IsEmpty) { IConstructEllipticArc constructEllipticArc = new EllipticArcClass(); constructEllipticArc.ConstructEnvelope(envelope); ISegment inSegment = constructEllipticArc as ISegment; ISegmentCollection segmentCollection = new RingClass(); object missing = Type.Missing; segmentCollection.AddSegment(inSegment, ref missing, ref missing); IRing ring = segmentCollection as IRing; ring.Close(); IGeometryCollection geometryCollection = new PolygonClass(); geometryCollection.AddGeometry(ring, ref missing, ref missing); this.AppendNodeToTreeList(new EllipseElementClass { Geometry = (geometryCollection as IGeometry) }); } }
private void AddEllipseElement() { IEnvelope pEnvelope = axMapControl1.TrackRectangle(); if (pEnvelope == null) { return; } IConstructEllipticArc pConstructEllipticArc = new EllipticArcClass(); //建立橢圓的Geometry pConstructEllipticArc.ConstructEnvelope(pEnvelope); IEllipticArc pEllipticArc = (IEllipticArc)pConstructEllipticArc; ISegmentCollection pSegmentCollection = new PolygonClass(); object Missing = Type.Missing; pSegmentCollection.AddSegment((ISegment)pEllipticArc, ref Missing, ref Missing); IGeometry pGeometry = pSegmentCollection as IGeometry; IEllipseElement pEllipseElement = new EllipseElementClass(); IElement pElement = pEllipseElement as IElement; pElement.Geometry = pGeometry; AddElement(pElement); }
/// <summary> /// ������Բ /// </summary> /// <params name="pEnvelope"></params> public void DrawEllipse(IEnvelope pEnvelope) { IFeatureLayer pFeatureLayer = m_pCurrentLayer as IFeatureLayer; IFeatureClass pFeatureClass = pFeatureLayer.FeatureClass; IConstructEllipticArc constructEllipticArc = new EllipticArcClass(); constructEllipticArc.ConstructEnvelope(pEnvelope); IEllipticArc ellipse = constructEllipticArc as IEllipticArc; ISegment segment = ellipse as ISegment; ISegmentCollection pPolyline = new Polyline() as ISegmentCollection; object Missing = Type.Missing; pPolyline.AddSegment(segment, ref Missing, ref Missing); IGeometry poly = pPolyline as IGeometry; IFeature pCircleFeature = pFeatureClass.CreateFeature(); pCircleFeature.Shape = poly as PolylineClass; pCircleFeature.Store(); //�ֲ�ˢ�� IInvalidArea pInvalidArea = new InvalidAreaClass(); pInvalidArea.Add(poly); pInvalidArea.Display = m_hookHelper.ActiveView.ScreenDisplay; pInvalidArea.Invalidate((short)esriScreenCache.esriAllScreenCaches); }