public static RPoint ToUnit(PointF screenpoint, UcMapControl mapCtrl) { float panoffsetX = mapCtrl.m_panOffset.X + mapCtrl.m_dragOffset.X; float panoffsetY = mapCtrl.m_panOffset.Y + mapCtrl.m_dragOffset.Y; float xpos = (screenpoint.X - panoffsetX) / (m_screenResolution * mapCtrl.Zoom); float ypos = mapCtrl.ScreenHeight() - ((screenpoint.Y - panoffsetY)) / (m_screenResolution * mapCtrl.Zoom); return(new RPoint(xpos, ypos, 0)); }
public static PointF ToScreen(RPoint pt, UcMapControl mapCtrl) { PointF transformedPoint = new PointF((float)pt.X, (float)pt.Y); transformedPoint.Y = mapCtrl.ScreenHeight() - transformedPoint.Y; //将Unit坐标系转换为屏幕坐标系,Y轴反向,此时Y坐标为屏幕坐标系坐标 transformedPoint.Y *= m_screenResolution * mapCtrl.Zoom; //相对于屏幕原点放大 transformedPoint.X *= m_screenResolution * mapCtrl.Zoom; transformedPoint.X += mapCtrl.m_panOffset.X + mapCtrl.m_dragOffset.X; transformedPoint.Y += mapCtrl.m_panOffset.Y + mapCtrl.m_dragOffset.Y; return(transformedPoint); }