首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

怎么动态给picturebox控件的size属性赋值

2013-07-08 
如何动态给picturebox控件的size属性赋值如题,我有一批图片,分辨率不一,我把这些图片显示在flawlayoutpane

如何动态给picturebox控件的size属性赋值
如题,我有一批图片,分辨率不一,我把这些图片显示在flawlayoutpanel中的picturebox控件上了,当我点击某个picturebox控件时,我给当前点击的图片加载到我窗体左侧的panel中的picturebox控件上,因为我flawlayoutpanel中picturebox控件上的图片大小不一样,所以我想动态的给panel中的picturebox控件的size赋值,让他按比例显示(我的左侧的picturebox控件支持放大缩小左转右转(左转右转改变原图)),现在只有按比例显示没做出来了,求高手解答????
[解决办法]
/// <summary> 
        /// 对给定的一个图片(Image对象)生成一个指定大小的缩略图。 
        /// </summary> 
        /// <param name="originalImage">原始图片</param> 
        /// <param name="thumMaxWidth">缩略图的宽度</param> 
        /// <param name="thumMaxHeight">缩略图的高度</param> 
        /// <returns>返回缩略图的Image对象</returns> 
        public static System.Drawing.Image GetThumbNailImage(System.Drawing.Image originalImage, int thumMaxWidth, int thumMaxHeight)
        {
            Size thumRealSize = Size.Empty;
            System.Drawing.Image newImage = originalImage;
            Graphics graphics = null;

            try
            {
                thumRealSize = GetNewSize(thumMaxWidth, thumMaxHeight, originalImage.Width, originalImage.Height);
                newImage = new Bitmap(thumRealSize.Width, thumRealSize.Height);
                graphics = Graphics.FromImage(newImage);

                graphics.CompositingQuality = CompositingQuality.HighQuality;


                graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
                graphics.SmoothingMode = SmoothingMode.HighQuality;

                graphics.Clear(Color.Transparent);

                graphics.DrawImage(originalImage, new Rectangle(0, 0, thumRealSize.Width, thumRealSize.Height), new Rectangle(0, 0, originalImage.Width, originalImage.Height), GraphicsUnit.Pixel);
            }
            catch { }
            finally
            {
                if (graphics != null)
                {
                    graphics.Dispose();
                    graphics = null;
                }
            }

            return newImage;
        } 
============================================================================
/// <summary> 
        /// 获取一个图片按等比例缩小后的大小。 
        /// </summary> 
        /// <param name="maxWidth">需要缩小到的宽度</param> 
        /// <param name="maxHeight">需要缩小到的高度</param> 
        /// <param name="imageOriginalWidth">图片的原始宽度</param> 
        /// <param name="imageOriginalHeight">图片的原始高度</param> 
        /// <returns>返回图片按等比例缩小后的实际大小</returns> 
        public static Size GetNewSize(int maxWidth, int maxHeight, int imageOriginalWidth, int imageOriginalHeight)


        {
            double w = 0.0;
            double h = 0.0;
            double sw = Convert.ToDouble(imageOriginalWidth);
            double sh = Convert.ToDouble(imageOriginalHeight);
            double mw = Convert.ToDouble(maxWidth);
            double mh = Convert.ToDouble(maxHeight);

            if (sw < mw && sh < mh)
            {
                w = sw;
                h = sh;
            }
            else if ((sw / sh) > (mw / mh))
            {
                w = maxWidth;
                h = (w * sh) / sw;
            }
            else
            {
                h = maxHeight;
                w = (h * sw) / sh;
            }

            return new Size(Convert.ToInt32(w), Convert.ToInt32(h));
        } 


压缩图片大小方法,size这个属性是没有任何效果的。

热点排行