c#将图像(缩放)绘制到图形,不进行正确插值。 修复?

我的图像宽1px,有些高度。 我需要在它的OnPaint事件的控件的整个宽度上绘制这个图像。 我得到它画,但不正确。 看起来当它拉伸它时,它实际上并没有填满所有像素。 好像插值关闭了。 有没有办法说“停止聪明,只是画出来”? 我在图形对象的选项中看不到InterpolationMode.Off或.None。

我可以通过使用宽度为X的图像来确认我实际上绘制了整个宽度,其中X与控件的宽度相同。 然后当它绘制时,它正常覆盖整个区域。 然而,这个控件一直在resize,并且为了节省内存,所有使用1px宽图像的爵士乐在网络世界中是很正常的。 这适用于桌面C#应用程序。 有想法该怎么解决这个吗?

好的我找出了神奇的关键词:

g.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.Half; 

这与将插值模式设置为NearestNeighbour相结合,可以绘制完整的块。

如果不设置插值模式,您会得到奇怪的混合(预期)。 在不设置PixelOffsetMode的情况下,最近邻居算法没有邻居可以在空白颜料上进行比较,因此只绘制了一半的图像,宽度的一半。 将其设置为偏移一半,将所有内容移动-0.5px,并允许此算法用于块纹理。

在这种情况下,InterpolationMode.NearestNeighbor是您要使用的。