The issue is to size the picture to fit into given window without distorting it. I found many über complicated solutions on the internet so I ended up writing my own. Here's the algorithm in prose:
Find the factor by which you need to multiply your picture's width and height. Try using outer height / inner height and if the width doesn't fit, use outer width / inner width.Here's the code fragment.
private float ScaleFactor(Rectangle outer, Rectangle inner) { float factor = (float)outer.Height / (float)inner.Height; if ((float)inner.Width * factor > outer.Width) // Switch! factor = (float)outer.Width / (float)inner.Width; return factor; }To fit picture rectangle (pctRect) to window rectangle (wndRect) call it like this
float factor=ScaleFactor(wndRect, pctRect); // Outer, inner RectangleF resultRect=new RectangleF(0,0,pctRect.Width*factor,pctRect.Height*Factor)
Subscribe to:
Post Comments
(
Atom
)
0 comment(s) :
Post a Comment