diff Chronosv2/source/Extensions/ImageExtensions.cs @ 10:443821e55f06

Initial cleaned up add from Codeplex files
author stevenh7776 stevenhollidge@hotmail.com
date Tue, 21 Feb 2012 17:25:44 +0700
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Chronosv2/source/Extensions/ImageExtensions.cs	Tue Feb 21 17:25:44 2012 +0700
@@ -0,0 +1,47 @@
+using System;
+using System.Drawing;
+using System.Drawing.Drawing2D;
+
+namespace Chronos.Extensions
+{
+    public static class ImageExtensions
+    {
+        #region · Extensions ·
+
+        /// <summary>
+        /// Resizes the specified image.
+        /// </summary>
+        /// <param name="image">The image.</param>
+        /// <param name="size">The size.</param>
+        /// <returns></returns>
+        public static Image Resize(this Image image, Size size)
+        {
+            Size newSize = new Size(size.Width, size.Height);
+
+            if (image.Size.Width > image.Size.Height)
+            {
+                newSize.Height = (image.Size.Height * size.Width) / image.Size.Width;
+            }
+            else
+            {
+                newSize.Width = (image.Size.Width * size.Height) / image.Size.Height;
+            }
+
+            Rectangle   rectangle   = new Rectangle(0, 0, newSize.Width, newSize.Height);
+            Image       resized     = new Bitmap(newSize.Width, newSize.Height, image.PixelFormat);
+
+            using (Graphics graphic = Graphics.FromImage(resized))
+            {
+                graphic.CompositingQuality  = CompositingQuality.HighQuality;
+                graphic.SmoothingMode       = SmoothingMode.HighQuality;
+                graphic.InterpolationMode   = InterpolationMode.HighQualityBicubic;
+
+                graphic.DrawImage((System.Drawing.Image)image.Clone(), rectangle);
+            }
+
+            return resized;
+        }
+
+        #endregion
+    }
+}