像MS Paint一样调整位图大小 - 没有抗锯齿

时间:2010-11-07 23:50:13

标签: c# visual-studio-2010

当我使用此方法调整位图大小时:

    private Bitmap ResizeBitmap(Bitmap b, int nWidth, int nHeight)
    {
        Bitmap result = new Bitmap(nWidth, nHeight);
        using (Graphics g = Graphics.FromImage((Image)result))
        {
            g.SmoothingMode = SmoothingMode.None;
            g.DrawImage(b, 0, 0, nWidth, nHeight);
        }
        return result;
    }

即使我指定了它仍然使用抗锯齿:

g.SmoothingMode = SmoothingMode.None;

我想要一个没有任何平滑的基本调整大小。

3 个答案:

答案 0 :(得分:10)

而不是做

g.SmoothingMode = SmoothingMode.None;

你应该做

g.InterpolationMode = InterpolationMode.NearestNeighbor;

答案 1 :(得分:3)

消除锯齿是一个子像素的事情,你实际上在调整大小操作期间寻找Nearest Neighbour interpolation

答案 2 :(得分:1)

查看InterpolationMode属性。

我认为这就是你想要的。 Hanselman有一篇很好的博客文章。