2010-11-07 5 views
4

Когда я использую этот метод, чтобы изменить размер растрового изображения:Изменение размера растрового изображения, как MS Paint - без сглаживания

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; 

Я хочу только основные изменение размера без сглаживания.

ответ

10

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

g.SmoothingMode = SmoothingMode.None; 

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

g.InterpolationMode = InterpolationMode.NearestNeighbor; 
+0

Не достаточно обычно, изменить PixelOffsetMode, а также, использовать половину. –

1

Посмотрите на InterpolationMode.

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

3

Anti-aliasing - это субпиксельная вещь, вы фактически ищете Nearest Neighbourinterpolation во время операции изменения размера.

Смежные вопросы