Bitmap bit = new Bitmap(150,150);
 Graphics g = Graphics.FromImage(bit);
 g.DrawImage(im,new Rectangle(0,0,x,y),new Rectangle(0,0,250, 250),GraphicsUnit.Pixel);
 MemoryStream msm = new MemoryStream();
 Stream str = (Stream)msm;
 bit.Save(str,ImageFormat.Jpeg);
 return Image.FromStream(str);
事情是这样的、我想把listview中的图标放大、缩小、所以先用picturebox来做实验、可是我处理过的图片我都不知道他会出现在屏幕的什么位置、我想知道g.drawimage()中的第二个参数和第三个参数应该怎么设置。而且我把图片重新绘制了的、但是查看图片的高度和宽度却没有改变。
 
    各位、大哥大姐帮下忙呀、刚来没分呀、也挣不来分、

解决方案 »

  1.   

    你的这个第一个Rectangle是源图像的,第二个是目标图像的,就是从原图象的指定范围内的图像,拷贝到目标图像上的一块区域,看帮助
      

  2.   


    /// <summary>
            /// Resize图片
            /// </summary>
            /// <param name="bmp">原始Bitmap</param>
            /// <param name="newW">新的宽度</param>
            /// <param name="newH">新的高度</param>
            /// <returns>处理以后的Bitmap</returns>
            public static Bitmap ResizeImage(Bitmap bmp, int newW, int newH)
            {
                try
                {
                    Bitmap b = new Bitmap(newW, newH);
                    Graphics g = Graphics.FromImage(b);
                    // 指定在缩放或旋转图像时使用的算法。
                    g.InterpolationMode = InterpolationMode.HighQualityBicubic;
                    // 缩放图像
                    g.DrawImage(bmp, new Rectangle(0, 0, newW, newH), new Rectangle(0, 0, bmp.Width, bmp.Height), GraphicsUnit.Pixel);
                    g.Dispose();
                    return b;
                }
                catch
                {
                    return null;
                }
            }
      

  3.   


    /// <summary>
    /// 一个空回调方法,ResetImageSize()方法调用
    /// </summary>
    /// <returns></returns>
    [EditorBrowsable(EditorBrowsableState.Never)]
    public static bool ImageCallback()
    {
    return false;
    }
    /// <summary>
    /// 返回此 Image 对象的缩略图  
    /// </summary>
    /// <param name="AtImage">要缩放的图象对象</param>
    /// <param name="ImageWidth">指定新的图象宽度</param>
    /// <param name="ImageHeight">指定新的图象高度</param>
    /// <returns></returns>
    public static Image ResetImageSize(Image AtImage,int ImageWidth,int ImageHeight)
    {
    if(AtImage == null) return null;
    Image.GetThumbnailImageAbort MyCallback = new Image.GetThumbnailImageAbort(ImageCallback);
    Image Img = null;
    Img = AtImage.GetThumbnailImage (ImageWidth, ImageHeight, MyCallback/*空回调方法*/, IntPtr.Zero/*必须是空指针*/);
    return Img;
    }
    /// <summary>
    /// 返回此 Bitmap 对象的缩略图  
    /// </summary>
    /// <param name="AtBitmap">要缩放的位图对象</param>
    /// <param name="BitmapWidth">指定新的位图宽度</param>
    /// <param name="BitmapHeight">指定新的位图高度</param>
    /// <returns></returns>
    public static Bitmap ResetBitmapSize(Bitmap AtBitmap,int BitmapWidth,int BitmapHeight)
    {
    Image Img   = (Image)AtBitmap;
    Image rsImg = ResetImageSize(Img,BitmapWidth,BitmapHeight);
    return (Bitmap)rsImg;
    }
    /// <summary>
    /// 返回此 Image 对象的缩略图 
    /// </summary>
    /// <param name="AtImage">要缩放的图象对象</param>
    /// <param name="ImageWidth">指定新的图象宽度</param>
    /// <param name="ImageHeight">指定新的图象高度</param>
    /// <returns></returns>
    public static Image GetNewImage(Image AtImage,int ImageWidth,int ImageHeight)
    {
    //创建一个指定高宽的位图对象
    return (Image) new Bitmap(AtImage/*以此图象格式为基准*/,ImageWidth,ImageHeight);
    }