Reputation: 83697
When I use this method to resize a bitmap:
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;
}
It still uses antialiasing even though I specified:
g.SmoothingMode = SmoothingMode.None;
I want just a basic resizing without any smoothing.
Upvotes: 4
Views: 3930
Reputation: 9058
Instead of doing
g.SmoothingMode = SmoothingMode.None;
you should do
g.InterpolationMode = InterpolationMode.NearestNeighbor;
Upvotes: 11
Reputation: 4917
Anti-aliasing is a sub-pixel thing, you're actually looking for Nearest Neighbour interpolation during the resize operation.
Upvotes: 4
Reputation: 97681
Take a look at the InterpolationMode property.
I think that's what you want. Hanselman has a good blog article on it.
Upvotes: 1