使用graphics.DrawImage进行非平滑的Upscaling

我正在网格中绘制一些图像。 图像保存为16x16px pngs。

但是,我后来决定将网格的大小增加到32x32px。

当我使用以下代码时:

graphics.DrawImage(image, Xdraw, Ydraw, 32, 32); 

其中image是从png加载的Image,而Xdraw和Ydraw是在上面某处决定的左上角。

图像稍微模糊,因为.DrawImage使用双三次(或其他平滑函数)来放大图像。 我希望它关闭平滑,所以我可以保留硬边。

这可能吗?

我认为你应该改变图形的InterpolationMode属性。 我们来看看Graphics类的SmoothingModeCompositingQuality

有两件事可能有用。

  • 尝试在Graphics对象上试验InterpolationMode属性。 不幸的是,我不知道哪个设置比默认设置更好。
  • 尝试在Graphics对象上使用ScaleTransform (记得在完成后重置它)。