/// <summary> /// Work constructor /// </summary> public PageView(RectangleF frame, int pageNumber) : base(frame) { // Init page scroll view ScrollsToTop = false; DelaysContentTouches = false; ShowsVerticalScrollIndicator = false; ShowsHorizontalScrollIndicator = false; ContentMode = UIViewContentMode.Redraw; AutoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight; UserInteractionEnabled = true; AutosizesSubviews = false; BackgroundColor = UIColor.Clear; ViewForZoomingInScrollView = delegate(UIScrollView sender) { return mPageContentContainerView; }; // Create and init (calc frame size) page content view mPageContentView = new PageContentView(PageContentView.GetPageViewSize(pageNumber), pageNumber); // Create and init page content container view mPageContentContainerView = new UIView(mPageContentView.Bounds); mPageContentContainerView.AutosizesSubviews = false; mPageContentContainerView.UserInteractionEnabled = false; mPageContentContainerView.ContentMode = UIViewContentMode.Redraw; mPageContentContainerView.AutoresizingMask = UIViewAutoresizing.None; mPageContentContainerView.Layer.CornerRadius = 5; mPageContentContainerView.Layer.ShadowOffset = new SizeF(2.0f, 2.0f); mPageContentContainerView.Layer.ShadowRadius = 4.0f; mPageContentContainerView.Layer.ShadowOpacity = 1.0f; mPageContentContainerView.Layer.ShadowPath = UIBezierPath.FromRect(mPageContentContainerView.Bounds).CGPath; mPageContentContainerView.BackgroundColor = UIColor.White; // Create and init page thumb view mThumbView = new ThumbView(mPageContentView.Bounds, ThumbContentSize, pageNumber); // Add views to parents mPageContentContainerView.AddSubview(mThumbView); mPageContentContainerView.AddSubview(mPageContentView); AddSubview(mPageContentContainerView); // Set content size, offset and inset ContentSize = mPageContentView.Bounds.Size; ContentOffset = new PointF((0.0f - ContentViewPadding), (0.0f - ContentViewPadding)); ContentInset = new UIEdgeInsets(ContentViewPadding, ContentViewPadding, ContentViewPadding, ContentViewPadding); ContentSize = mPageContentContainerView.Bounds.Size; // Setup zoom scale UpdateMinimumMaximumZoom(); ZoomScale = MinimumZoomScale; }
/// <summary> /// Working. /// </summary> public PageView(RectangleF frame, AutoScaleModes autoScaleMode, int pageNumber) : base(frame) { // Init page scroll view ScrollsToTop = false; DelaysContentTouches = false; ShowsVerticalScrollIndicator = false; ShowsHorizontalScrollIndicator = false; ContentMode = UIViewContentMode.Redraw; AutoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight; UserInteractionEnabled = true; AutosizesSubviews = false; BackgroundColor = UIColor.Clear; ViewForZoomingInScrollView = delegate(UIScrollView sender) { return(_PageContentContainerView); }; AutoScaleMode = autoScaleMode; NeedUpdateZoomAndOffset = true; // Create and init (calc frame size) page content view _PageContentView = new PageContentView(PageContentView.GetPageViewSize(pageNumber), pageNumber); // Create and init page content container view _PageContentContainerView = new UIView(_PageContentView.Bounds); _PageContentContainerView.AutosizesSubviews = false; _PageContentContainerView.UserInteractionEnabled = false; _PageContentContainerView.ContentMode = UIViewContentMode.Redraw; _PageContentContainerView.AutoresizingMask = UIViewAutoresizing.None; _PageContentContainerView.Layer.CornerRadius = 5; _PageContentContainerView.Layer.ShadowOffset = new SizeF(2.0f, 2.0f); _PageContentContainerView.Layer.ShadowRadius = 4.0f; _PageContentContainerView.Layer.ShadowOpacity = 1.0f; _PageContentContainerView.Layer.ShadowPath = UIBezierPath.FromRect(_PageContentContainerView.Bounds).CGPath; _PageContentContainerView.BackgroundColor = UIColor.White; // Create and init page thumb view //_ThumbView = new ThumbView(_PageContentView.Bounds, ThumbContentSize, pageNumber); // Add views to parents //_PageContentContainerView.AddSubview(_ThumbView); _PageContentContainerView.AddSubview(_PageContentView); AddSubview(_PageContentContainerView); // Set content size, offset and inset ContentSize = _PageContentView.Bounds.Size; ContentOffset = new PointF((0.0f - ContentViewPadding), (0.0f - ContentViewPadding)); ContentInset = new UIEdgeInsets(ContentViewPadding, ContentViewPadding, ContentViewPadding, ContentViewPadding); ContentSize = _PageContentContainerView.Bounds.Size; }
public PageView(RectangleF frame, AutoScaleModes autoScaleMode, int pageNumber) : base(frame) { ScrollsToTop = false; DelaysContentTouches = false; ShowsVerticalScrollIndicator = false; ShowsHorizontalScrollIndicator = false; ContentMode = UIViewContentMode.Redraw; AutoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight; UserInteractionEnabled = true; AutosizesSubviews = false; BackgroundColor = UIColor.Clear; ViewForZoomingInScrollView = delegate(UIScrollView sender) { return _pageContentContainerView; }; AutoScaleMode = autoScaleMode; NeedUpdateZoomAndOffset = true; _pageContentView = new PageContentView(PageContentView.GetPageViewSize(pageNumber), pageNumber); _pageContentContainerView = new UIView(_pageContentView.Bounds); _pageContentContainerView.AutosizesSubviews = false; _pageContentContainerView.UserInteractionEnabled = false; _pageContentContainerView.ContentMode = UIViewContentMode.Redraw; _pageContentContainerView.AutoresizingMask = UIViewAutoresizing.None; _pageContentContainerView.Layer.CornerRadius = 5; _pageContentContainerView.Layer.ShadowOffset = new SizeF(2.0f, 2.0f); _pageContentContainerView.Layer.ShadowRadius = 4.0f; _pageContentContainerView.Layer.ShadowOpacity = 1.0f; _pageContentContainerView.Layer.ShadowPath = UIBezierPath.FromRect(_pageContentContainerView.Bounds).CGPath; _pageContentContainerView.BackgroundColor = UIColor.White; // TODO: _ThumbView = new ThumbView(_PageContentView.Bounds, ThumbContentSize, pageNumber); // TODO: _PageContentContainerView.AddSubview(_ThumbView); _pageContentContainerView.AddSubview(_pageContentView); AddSubview(_pageContentContainerView); ContentSize = _pageContentView.Bounds.Size; ContentOffset = new PointF((0.0f - ContentViewPadding), (0.0f - ContentViewPadding)); ContentInset = new UIEdgeInsets(ContentViewPadding, ContentViewPadding, ContentViewPadding, ContentViewPadding); ContentSize = _pageContentContainerView.Bounds.Size; }
/// <summary> /// Returns thumb image object for page /// </summary> /// <param name="thumbContentSize">Thumb content size</param> /// <param name="pageNumber">Page number for what will created image object</param> /// <returns>Page image object</returns> private static UIImage GetThumbImage(float thumbContentSize, int pageNumber) { if ((pageNumber <= 0) || (pageNumber > PDFDocument.PageCount)) { return(null); } // Calc page view size var pageSize = PageContentView.GetPageViewSize(pageNumber); if (pageSize.Width % 2 > 0) { pageSize.Width--; } if (pageSize.Height % 2 > 0) { pageSize.Height--; } // Calc target size var targetSize = new Size((int)pageSize.Width, (int)pageSize.Height); // Draw page on CGImage CGImage pageImage; using (CGColorSpace rgb = CGColorSpace.CreateDeviceRGB()) { using (var context = new CGBitmapContext(null, targetSize.Width, targetSize.Height, 8, 0, rgb, CGBitmapFlags.ByteOrder32Little | CGBitmapFlags.NoneSkipFirst)) { using (var pdfPage = PDFDocument.GetPage(pageNumber)) { // Draw page on custom CGBitmap context var thumbRect = new RectangleF(0.0f, 0.0f, targetSize.Width, targetSize.Height); context.SetFillColor(1.0f, 1.0f, 1.0f, 1.0f); context.FillRect(thumbRect); context.ConcatCTM(pdfPage.GetDrawingTransform(CGPDFBox.Crop, thumbRect, 0, true)); context.SetRenderingIntent(CGColorRenderingIntent.Default); context.InterpolationQuality = CGInterpolationQuality.Default; context.DrawPDFPage(pdfPage); // Create CGImage from custom CGBitmap context pageImage = context.ToImage(); } } } return(UIImage.FromImage(pageImage)); }