# HG changeset patch # User Ivo Smits # Date 1366556463 -7200 # Node ID 70bde4fa6a2f722ee095c96dd2d36f61c5a1c21d # Parent e9b704f193df222040ff6071a1644af05af7547c FBGUI: Fixed image scaling in FBGImageBox diff -r e9b704f193df -r 70bde4fa6a2f FBGUI/FBGUI.cs --- a/FBGUI/FBGUI.cs Fri Apr 19 17:46:24 2013 +0200 +++ b/FBGUI/FBGUI.cs Sun Apr 21 17:01:03 2013 +0200 @@ -1373,6 +1373,7 @@ Image scaledImage = null; Size imageSize; Boolean ownsImage = false; + Boolean shouldScaleImage = false; PictureBoxSizeMode sizeMode = PictureBoxSizeMode.Normal; Rectangle imageRect; public Image Image { get { return image; } set { SetImage(value, false); } } @@ -1396,12 +1397,12 @@ } } private void UpdateImageRect(Size csize) { - if (scaledImage != null && scaledImage != image) scaledImage.Dispose(); + shouldScaleImage = false; + if (scaledImage != null) scaledImage.Dispose(); scaledImage = null; if (image == null) return; Boolean boundsset = !csize.IsEmpty; if (!boundsset && sizeMode == PictureBoxSizeMode.AutoSize) { - scaledImage = image; Size = imageSize; return; } @@ -1425,14 +1426,18 @@ imageRect = Rectangle.Round(new RectangleF(csize.Width / 2f - dispsize.Width / 2f, csize.Height / 2f - dispsize.Height / 2f, dispsize.Width, dispsize.Height)); break; } - if (imageRect.Size == imageSize) scaledImage = image; + shouldScaleImage = imageRect.Size != imageSize; if (!boundsset) Invalidate(); } protected override void Paint(Graphics g) { if (!Visible) return; base.Paint(g); - if (PreScaleImage && scaledImage == null && image != null) scaledImage = new Bitmap(image, imageRect.Size); - if (scaledImage != null) g.DrawImage(image, imageRect); + if (shouldScaleImage && PreScaleImage && image != null) { + scaledImage = new Bitmap(image, imageRect.Size); + shouldScaleImage = false; + } + if (scaledImage != null) g.DrawImage(scaledImage, imageRect); + else if (image != null) g.DrawImage(image, imageRect); } public Point PointToImage(Point point) { switch (sizeMode) {