public void Transform(esriTransformDirection direction, ITransformation transformation) { if (null != this.m_triangle) { ((ITransform2D)this.m_triangle).Transform(direction, transformation); IAffineTransformation2D affineTransformation2D = (IAffineTransformation2D)transformation; if (affineTransformation2D.YScale != 1) { TriangleElementClass mSize = this; mSize.m_size = mSize.m_size * Math.Max(affineTransformation2D.YScale, affineTransformation2D.XScale); } this.RefreshTracker(); } }
public void Transform(esriTransformDirection direction, ITransformation transformation) { if (null == m_triangle) { return; } //Geometry ((ITransform2D)m_triangle).Transform(direction, transformation); IAffineTransformation2D affineTrans = (IAffineTransformation2D)transformation; if (affineTrans.YScale != 1.0) { m_size *= Math.Max(affineTrans.YScale, affineTrans.XScale); } RefreshTracker(); }
public override void OnMouseDown(int Button, int Shift, int X, int Y) { if (Button == 2) { return; } INewLineFeedback pLineFeed; if (m_pPoint1 == null) { m_pPoint1 = m_hookHelper.ActiveView.ScreenDisplay.DisplayTransformation.ToMapPoint(X, Y); m_pPoint1 = GIS.GraphicEdit.SnapSetting.getSnapPoint(m_pPoint1); m_pFeedback = new NewLineFeedbackClass(); pLineFeed = (INewLineFeedback)m_pFeedback; pLineFeed.Start(m_pPoint1); if (m_pFeedback != null) { m_pFeedback.Display = m_hookHelper.ActiveView.ScreenDisplay; } } else if (m_pPoint2 == null) { ///20140216 lyf ICursor pCursor = null; m_selectionSet.Search(null, false, out pCursor); IFeatureCursor pFeatureCursor = pCursor as IFeatureCursor; IFeature m_pFeature = pFeatureCursor.NextFeature(); if (pCursor != null) { pCursor = null; ESRI.ArcGIS.ADF.ComReleaser.ReleaseCOMObject(pCursor); } if (m_pFeature == null) { MessageBox.Show(@"所选要素为空,请重新选择要素。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } m_pPoint2 = m_hookHelper.ActiveView.ScreenDisplay.DisplayTransformation.ToMapPoint(X, Y); m_pPoint2 = GIS.GraphicEdit.SnapSetting.getSnapPoint(m_pPoint2); //线和要素都齐全了,开始复制 //IFeatureLayer pFeatureLayer = m_pCurrentLayer as IFeatureLayer; IFeatureClass pFeatureClass = m_featureLayer.FeatureClass; ILine nLine = new LineClass();//镜像轴线 nLine.PutCoords(m_pPoint1, m_pPoint2); ITransformation nTransformation = new AffineTransformation2DClass(); IAffineTransformation2D nAffineTransformation2D = nTransformation as IAffineTransformation2D; nAffineTransformation2D.DefineReflection(nLine); //启动编辑 IWorkspaceEdit pWorkspaceEdit = DataEditCommon.g_CurWorkspaceEdit; // GetWorkspaceEdit(); ITransform2D nTransform2D = m_pFeature.Shape as ITransform2D; //镜像目标 nTransform2D.Transform(esriTransformDirection.esriTransformForward, nTransformation); if (m_pFeature.Shape.Dimension == esriGeometryDimension.esriGeometry0Dimension) { pWorkspaceEdit.StartEditOperation(); IFeature pNewFeature = pFeatureClass.CreateFeature(); IPoint pNewPoint = nTransform2D as IPoint; pNewFeature.Shape = pNewPoint; pNewFeature.Store(); pWorkspaceEdit.StopEditOperation(); DataEditCommon.g_pMyMapCtrl.Map.ClearSelection(); DataEditCommon.g_pMyMapCtrl.Map.SelectFeature(m_pCurrentLayer, pNewFeature); } else if (m_pFeature.Shape.Dimension == esriGeometryDimension.esriGeometry1Dimension) { pWorkspaceEdit.StartEditOperation(); IFeature pNewFeature = pFeatureClass.CreateFeature(); IPolyline pNewPolyline = nTransform2D as IPolyline;//镜像所得 pNewFeature.Shape = pNewPolyline; pNewFeature.Store(); pWorkspaceEdit.StopEditOperation(); DataEditCommon.g_pMyMapCtrl.Map.ClearSelection(); DataEditCommon.g_pMyMapCtrl.Map.SelectFeature(m_pCurrentLayer, pNewFeature); } else if (m_pFeature.Shape.Dimension == esriGeometryDimension.esriGeometry2Dimension) { pWorkspaceEdit.StartEditOperation(); IFeature pNewFeature = pFeatureClass.CreateFeature(); IPolygon pNewPolygon = nTransform2D as IPolygon;//镜像所得 pNewFeature.Shape = pNewPolygon; pNewFeature.Store(); pWorkspaceEdit.StopEditOperation(); DataEditCommon.g_pMyMapCtrl.Map.ClearSelection(); DataEditCommon.g_pMyMapCtrl.Map.SelectFeature(m_pCurrentLayer, pNewFeature); } else { } pLineFeed = (INewLineFeedback)m_pFeedback; pLineFeed.AddPoint(m_pPoint2); pLineFeed.Stop();//拖拽停止 m_pFeature = null; m_pPoint1 = null; m_pPoint2 = null; } m_hookHelper.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeoSelection, null, null); m_hookHelper.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null); }
public AroundPointCls() { m_Radius = 10; m_Number = 6; m_pT =new AffineTransformation2DClass(); }
public AroundPointCls() { m_Radius = 10; m_Number = 6; m_pT = new AffineTransformation2DClass(); }