设置GDI+绘图清晰度

分享.NETGDI+ by 达达 at 2006-11-28

GDI+绘制图片时是可以设置绘图清晰度的,清晰绘制比较占系统资源,普通模式绘制速度比较快,这个靠自己权衡了。公司的杂志缩略图要求高清晰,所以今天在以前做的一个缩略图生成函数里加了GDI+清晰度设置的代码。 其实设置清晰度很简单,只要加上一下三行代码,就可以让生成的缩略图和PhotoShop生成的效果一样了:

Graphics _g = Graphics.FromImage(_newImg)
_g.SmoothingMode = SmoothingMode.AntiAlias;
_g.InterpolationMode = InterpolationMode.HighQualityBicubic;
_g.CompositingQuality = CompositingQuality.HighQuality;

完整的缩略图生成函数是这样的:

/// 改变图片尺寸
/// img -- 图片对象
/// sx -- 水平缩放比例
/// sy -- 垂直缩放比例
public static Bitmap ResizeImage(Image img, float sx, float sy)
{
    return ResizeImage(img, (int)(img.Width * sx), (int)(img.Height * sy));
}

/// 改变图片尺寸
/// img -- 图片对象
/// width -- 新的宽度
/// height -- 新的高度
public static Bitmap ResizeImage(Image img, int width, int height)
{
    Bitmap _newImg = new Bitmap(width, height);

    using (Graphics _g = Graphics.FromImage(_newImg))
    {
        _g.SmoothingMode = SmoothingMode.AntiAlias;
        _g.InterpolationMode = InterpolationMode.HighQualityBicubic;
        _g.CompositingQuality = CompositingQuality.HighQuality;
        _g.DrawImage(img, 0, 0, width, height);
    }

    return _newImg;
}

效果对比:

设置前设置后