PDFsharp & MigraDoc Forum https://forum.pdfsharp.net/ |
|
Scaling images in a MigraDoc Document https://forum.pdfsharp.net/viewtopic.php?f=2&t=2010 |
Page 1 of 1 |
Author: | blue666 [ Wed May 09, 2012 11:03 pm ] |
Post subject: | Scaling images in a MigraDoc Document |
I had a need to put an image into a MigraDoc table. The problem was that if the image was to large for the cell, it would spill over and off the page, plus I didn't want to resize it if it wasn't too big. When trying to inspect the image to find out the width and height, it would always return 0 for both. In case it might help someone else, here is how I resolved the issue. Code: private void AddRow2() { var row = table.AddRow(); row.Shading.Color = TableWhite; //row.HeightRule=RowHeightRule.Exactly; //row.Height = 680; var cellParagraph = row.Cells[0].AddParagraph(); //the diagrampath points to a picture var image = cellParagraph.AddImage(viewModel.DiagramPath); //because image.width/height always = 0 I had to do this var imageScaling = CalculateImageScaling(); if (imageScaling == null) { return; } image.ScaleHeight = imageScaling.Value; image.ScaleWidth = imageScaling.Value; } private double? CalculateImageScaling() { float horizontalResolution; float verticalResolution; //gets the users screen resolution using (var panel = new Panel()) { using (var g = panel.CreateGraphics()) { horizontalResolution = g.DpiX; verticalResolution = g.DpiY; } } //bring the image in as a GDI+ object var image = new Bitmap(viewModel.DiagramPath); //calculate the points size of the image var ptsWidth = image.Width * (72/horizontalResolution ); var ptsHeight = image.Height * (72/verticalResolution); //do nothing if the image will fit in the cell if (ptsHeight < 680 && ptsWidth < 576 ) { return null; } //return the scalingFactor of the dimension that sticks out furthest // in points 576 is the cell width, 680 is the cell height var widthDiff = ptsWidth - 576; var heightDiff = ptsHeight - 680; if (heightDiff > widthDiff) { return 680 / ptsHeight ; } return 576 / ptsWidth ; } |
Page 1 of 1 | All times are UTC |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |