private void Scroll(Point point) { if (target == null) { return; } var zoom = this.Scale * 100 / target.Zoom; if (zoom <= float.Epsilon) { return; } var p0 = target.PlaceToPoint(startPlace); p0 = new Point(0, p0.Y + (int)(point.Y / zoom)); var pp = target.PointToPlace(p0); target.DoRangeVisible(new Range(target, pp, pp), true); BeginInvoke((MethodInvoker)OnScroll); }