public void ScaleToFitBounds_Tall() { Size real = new Size(120, 200); Size limit = new Size(120, 100); Size result = new Size(60, 100); Assert.AreEqual(result, real.ScaleToFitBounds(limit)); }
public void ScaleToFitBounds_Wide() { Size real = new Size(240, 100); Size limit = new Size(120, 100); Size result = new Size(120, 50); Assert.AreEqual(result, real.ScaleToFitBounds(limit)); }
Bitmap RenderPageCore(int pageNum, Size maxSize, RenderQuality quality) { ArgCheck.InRange(pageNum, 0, PageCount, "pageNum"); _pdfDoc.o.CurrentPage = pageNum; _pdfDoc.o.UseMuPDF = false; if (_pdfDoc.o.SupportsMuPDF && quality == RenderQuality.HighQuality) { _pdfDoc.o.UseMuPDF = true; } // Scale Size pageSize = new Size(_pdfDoc.o.PageWidth, _pdfDoc.o.PageHeight); Size size = pageSize.ScaleToFitBounds(maxSize); // 24bpp format for compatibility with AForge Bitmap bitmap = new Bitmap(size.Width, size.Height, PixelFormat.Format24bppRgb); using (Graphics g = Graphics.FromImage(bitmap)) { _pdfDoc.o.Zoom = ZoomConst * (double)bitmap.Width / _pdfDoc.o.PageWidth; try { // Note: not certain what the params mean. // Simple RenderPage sometimes does not zoom properly _pdfDoc.o.RenderPage(g.GetHdc(), true, false); g.ReleaseHdc(); } finally { _pdfDoc.o.Zoom = ZoomConst; } Rectangle bounds = new Rectangle(0, 0, bitmap.Width, bitmap.Height); g.FillRectangle(Brushes.White, bounds); _pdfDoc.o.ClientBounds = bounds; _pdfDoc.o.DrawPageHDC(g.GetHdc()); g.ReleaseHdc(); } return bitmap; }