我就是想在窗口的左边显示缩略图的列表,添加一个得到一个或一次添加整个文件夹下面的图片也可以,希望哪个高手给予代码,谢谢了。。

解决方案 »

  1.   

    参考Graphics 
    http://msdn.microsoft.com/zh-cn/library/system.drawing.graphics(VS.80).aspx
      

  2.   

            /// <SUMMARY>
            /// 图片无损缩放
            /// </SUMMARY>
            /// <PARAM name="sourceFile">图片源路径</PARAM>
            /// <PARAM name="destFile">缩放后图片输出路径</PARAM>
            /// <PARAM name="destHeight">缩放后图片高度</PARAM>
            /// <PARAM name="destWidth">缩放后图片宽度</PARAM>
            /// <RETURNS></RETURNS>
            public static bool GetThumbnail(string sourceFile, string destFile, int destHeight, int destWidth)
            {
                System.Drawing.Image imgSource = System.Drawing.Image.FromFile(sourceFile);
                System.Drawing.Imaging.ImageFormat thisFormat = imgSource.RawFormat;
                int sW = 0, sH = 0;
                // 按比例缩放
                int sWidth = imgSource.Width;
                int sHeight = imgSource.Height;            if (sHeight > destHeight || sWidth > destWidth)
                {
                    if ((sWidth * destHeight) > (sHeight * destWidth))
                    {
                        sW = destWidth;
                        sH = (destWidth * sHeight) / sWidth;
                    }
                    else
                    {
                        sH = destHeight;
                        sW = (sWidth * destHeight) / sHeight;
                    }
                }
                else
                {
                    sW = sWidth;
                    sH = sHeight;
                }            Bitmap outBmp = new Bitmap(destWidth, destHeight);
                Graphics g = Graphics.FromImage(outBmp);
                g.Clear(Color.Black);            // 设置画布的描绘质量
                g.CompositingQuality = CompositingQuality.HighQuality;
                g.SmoothingMode = SmoothingMode.HighQuality;
                g.InterpolationMode = InterpolationMode.HighQualityBicubic;            g.DrawImage(imgSource, new Rectangle((destWidth - sW) / 2, (destHeight - sH) / 2, sW, sH), 0, 0, imgSource.Width, imgSource.Height, GraphicsUnit.Pixel);
                g.Dispose();            // 以下代码为保存图片时,设置压缩质量
                EncoderParameters encoderParams = new EncoderParameters();
                long[] quality = new long[1];
                quality[0] = 100;            EncoderParameter encoderParam = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, quality);
                encoderParams.Param[0] = encoderParam;            try
                {
                    //获得包含有关内置图像编码解码器的信息的ImageCodecInfo 对象。
                    ImageCodecInfo[] arrayICI = ImageCodecInfo.GetImageEncoders();
                    ImageCodecInfo jpegICI = null;
                    for (int x = 0; x < arrayICI.Length; x++)
                    {
                        if (arrayICI[x].FormatDescription.Equals("JPEG"))
                        {
                            jpegICI = arrayICI[x];//设置JPEG编码
                            break;
                        }
                    }                if (jpegICI != null)
                    {
                        outBmp.Save(destFile, jpegICI, encoderParams);
                    }
                    else
                    {
                        outBmp.Save(destFile, thisFormat);
                    }                return true;
                }
                catch
                {
                    return false;
                }
                finally
                {
                    imgSource.Dispose();
                    outBmp.Dispose();
                }
            }
    用这个方法去获得缩略图,怎么把picturebox做成列表你自己想了 
      

  3.   

            /// <SUMMARY>
            /// 图片无损缩放
            /// </SUMMARY>
            /// <PARAM name="sourceFile">图片源路径</PARAM>
            /// <PARAM name="destFile">缩放后图片输出路径</PARAM>
            /// <PARAM name="destHeight">缩放后图片高度</PARAM>
            /// <PARAM name="destWidth">缩放后图片宽度</PARAM>
            /// <RETURNS></RETURNS>
            public static bool GetThumbnail(string sourceFile, string destFile, int destHeight, int destWidth)
            {
                System.Drawing.Image imgSource = System.Drawing.Image.FromFile(sourceFile);
                System.Drawing.Imaging.ImageFormat thisFormat = imgSource.RawFormat;
                int sW = 0, sH = 0;
                // 按比例缩放
                int sWidth = imgSource.Width;
                int sHeight = imgSource.Height;            if (sHeight > destHeight || sWidth > destWidth)
                {
                    if ((sWidth * destHeight) > (sHeight * destWidth))
                    {
                        sW = destWidth;
                        sH = (destWidth * sHeight) / sWidth;
                    }
                    else
                    {
                        sH = destHeight;
                        sW = (sWidth * destHeight) / sHeight;
                    }
                }
                else
                {
                    sW = sWidth;
                    sH = sHeight;
                }            Bitmap outBmp = new Bitmap(destWidth, destHeight);
                Graphics g = Graphics.FromImage(outBmp);
                g.Clear(Color.Black);            // 设置画布的描绘质量
                g.CompositingQuality = CompositingQuality.HighQuality;
                g.SmoothingMode = SmoothingMode.HighQuality;
                g.InterpolationMode = InterpolationMode.HighQualityBicubic;            g.DrawImage(imgSource, new Rectangle((destWidth - sW) / 2, (destHeight - sH) / 2, sW, sH), 0, 0, imgSource.Width, imgSource.Height, GraphicsUnit.Pixel);
                g.Dispose();            // 以下代码为保存图片时,设置压缩质量
                EncoderParameters encoderParams = new EncoderParameters();
                long[] quality = new long[1];
                quality[0] = 100;            EncoderParameter encoderParam = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, quality);
                encoderParams.Param[0] = encoderParam;            try
                {
                    //获得包含有关内置图像编码解码器的信息的ImageCodecInfo 对象。
                    ImageCodecInfo[] arrayICI = ImageCodecInfo.GetImageEncoders();
                    ImageCodecInfo jpegICI = null;
                    for (int x = 0; x < arrayICI.Length; x++)
                    {
                        if (arrayICI[x].FormatDescription.Equals("JPEG"))
                        {
                            jpegICI = arrayICI[x];//设置JPEG编码
                            break;
                        }
                    }                if (jpegICI != null)
                    {
                        outBmp.Save(destFile, jpegICI, encoderParams);
                    }
                    else
                    {
                        outBmp.Save(destFile, thisFormat);
                    }                return true;
                }
                catch
                {
                    return false;
                }
                finally
                {
                    imgSource.Dispose();
                    outBmp.Dispose();
                }
            }
    用这个方法去获得缩略图,怎么把picturebox做成列表你自己想了 
      

  4.   

    每个从Image类继承来的图像类都有一个GetThumbnailImage方法可以获得缩略图