Изменить размер растрового изображения, как MS Paint - без сглаживания - PullRequest
4 голосов
/ 08 ноября 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 ]

10 голосов
/ 08 ноября 2010

Вместо того, чтобы делать

g.SmoothingMode = SmoothingMode.None;

вы должны сделать

g.InterpolationMode = InterpolationMode.NearestNeighbor;
3 голосов
/ 08 ноября 2010

Сглаживание - это субпиксельная вещь, которую вы действительно ищете Ближайший сосед интерполяция во время операции изменения размера.

1 голос
/ 08 ноября 2010

Взгляните на свойство InterpolationMode .

Я думаю, это то, что вы хотите. У Хансельмана есть хорошая статья в блоге.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...