Exemple #1
0
        /// <summary>
        /// Get the range of pdf in the viewport.
        /// </summary>
        /// <param name="firstIndex">The first pdf index in the viewport.</param>
        /// <param name="lastIndex">The last pdf index in the viewport.</param>
        void GetVisibleRange(out int firstIndex, out int lastIndex)
        {
            var currentPosition = Math.Floor(svPdfContainer.VerticalOffset);
            var lastPosition    = Math.Floor(svPdfContainer.VerticalOffset + svPdfContainer.ViewportHeight);

            var pdfRanges = PdfPages.Select(page => new { start = page.Bound.VerticalOffset, end = page.Bound.VerticalOffset + page.Bound.Height * ZoomRate, index = page.Index });

            try
            {
                firstIndex = pdfRanges.Where(para => currentPosition >= para.start && currentPosition <= para.end).FirstOrDefault().index;
                lastIndex  = pdfRanges.Where(para => lastPosition >= para.start && lastPosition <= para.end).FirstOrDefault().index;
            }
            catch (Exception) // when last page position is in viewport
            {
                firstIndex = pdfRanges.Where(para => currentPosition >= para.start && currentPosition <= para.end).FirstOrDefault().index;
                lastIndex  = pdfRanges.LastOrDefault().index;
            }
        }