public void WarpLayer() { IGeoReference pGR = pRasterLayer as IGeoReference; if (pGR != null) { pGR.Reset(); if (OriginPoints == null || TargetPoints == null || OriginPoints.PointCount < 1 || TargetPoints.PointCount < 1) { return; } if (OriginPoints.PointCount == 1) { IPoint pt1, pt2; pt1 = OriginPoints.get_Point(0); pt2 = TargetPoints.get_Point(0); pGR.Shift(pt2.X - pt1.X, pt2.Y - pt1.Y); } else { if (OriginPoints.PointCount == 2) { pGR.TwoPointsAdjust(OriginPoints, TargetPoints); } else { pGR.Warp(OriginPoints, TargetPoints, WarpType); } TransformedOriginPoints = pGR.PointsTransform(OriginPoints, true); //RefreshWarpType(); } } }
//配准但不Register private void Register() { geoReference.Reset(); if (toPoint.PointCount > 0) { if (toPoint.PointCount == 1) { geoReference.Shift(toPoint.Point[0].X - fromPoint.Point[0].X, toPoint.Point[0].Y - fromPoint.Point[0].Y); } if (toPoint.PointCount == 2) { geoReference.TwoPointsAdjust(fromPoint, toPoint); } if (toPoint.PointCount >= 3) { geoReference.Warp(fromPoint, toPoint, 1); } } axMapControl1.Refresh(); }