日期:2014-05-17  浏览次数:21638 次

关于C#的drawimage
我要实现截取图片的中间部分并且放大,而且放大倍数可调。比如放大为原图两倍就是将原图分为8份,截取中间的4份并且放大至原图大小,我用到了这个函数,但这个函数定义是从原图的左上角的X和Y坐标为相对位置开始计算,这样的话每选一种倍数就得重新调用一次,我想从能不能从图片的中心为相对位置开始计算呢,这样先取倍数,最后调用一次就行,或者有其他的方法么?
//
        // 摘要:
        //     在指定位置并且按指定大小绘制指定的 System.Drawing.Image 的指定部分。
        //
        // 参数:
        //   image:
        //     要绘制的 System.Drawing.Image。
        //
        //   destRect:
        //     System.Drawing.Rectangle 结构,它指定所绘制图像的位置和大小。将图像进行缩放以适合该矩形。
        //
        //   srcX:
        //     要绘制的源图像部分的左上角的 x 坐标。
        //
        //   srcY:
        //     要绘制的源图像部分的左上角的 y 坐标。
        //
        //   srcWidth:
        //     要绘制的源图像部分的宽度。
        //
        //   srcHeight:
        //     要绘制的源图像部分的高度。
        //
        //   srcUnit:
        //     System.Drawing.GraphicsUnit 枚举的成员,它指定用于确定源矩形的度量单位。
        //
        // 异常:
        //   System.ArgumentNullException:
        //     image 为 null。
        public void DrawImage(Image image, Rectangle destRect, int srcX, int srcY, int srcWidth, int srcHeight, GraphicsUnit srcUnit);

图片 c#

------解决方案--------------------
晕,这不就是一个简单的几何和算术的问题么?

中心坐标就是长/2,宽/2。

难道没有3块钱、7块钱的人民币,你就买不了3块钱、7块钱的东西了?