protected override void OnSetCursor(SetCursorEventArgs e) { _cachedLink = null; if (_pageCacheValid) { var bounds = GetScrollClientArea(); int maxWidth = (int)(_maxWidth * _scaleFactor) + ShadeBorder.Size.Horizontal + PageMargin.Horizontal; int leftOffset = (HScroll ? DisplayRectangle.X : (bounds.Width - maxWidth) / 2) + maxWidth / 2; var displayLocation = DisplayRectangle.Location; var location = new Point( e.Location.X, e.Location.Y - displayLocation.Y ); for (int page = _visiblePageStart; page <= _visiblePageEnd; page++) { var links = GetPageLinks(page); var pageLocation = location; var pageBounds = _pageCache[page].Bounds; pageLocation.X -= leftOffset + pageBounds.Left; pageLocation.Y -= pageBounds.Top; foreach (var link in links.Links) { if (link.Bounds.Contains(pageLocation)) { _cachedLink = link; e.Cursor = Cursors.Hand; return; } } } } base.OnSetCursor(e); }
/// <summary> /// Called whent he cursor changes. /// </summary> /// <param name="e">The event args.</param> protected override void OnSetCursor(SetCursorEventArgs e) { _cachedLink = null; if (_pageCacheValid) { var offset = GetScrollOffset(); var bounds = GetScrollClientArea(); var displayLocation = DisplayRectangle.Location; var location = new Point( e.Location.X, e.Location.Y - displayLocation.Y ); for (int page = _visiblePageStart; page <= _visiblePageEnd; page++) { var links = GetPageLinks(page); var pageLocation = location; var pageBounds = _pageCache[page].Bounds; pageLocation.X -= offset.Width + pageBounds.Left; pageLocation.Y -= pageBounds.Top; foreach (var link in links.Links) { if (link.Bounds.Contains(pageLocation)) { _cachedLink = link; e.Cursor = Cursors.Hand; return; } } } } base.OnSetCursor(e); }
public LinkClickEventArgs(PdfPageLink link) { Link = link; }
public PageLink(PdfPageLink link, Rectangle bounds) { Link = link; Bounds = bounds; }