在窗口上绘制位图时不希望的消除锯齿

我正在渲染一个图像到一个System.Drawing.Bitmap,然后将其绘制到一个窗口中,但是我可以看到边缘正被反锯齿。 如何防止这一点?

一些更多的细节。 位图是这样创build的:

new Bitmap (this.Width, this.Height, Imaging.PixelFormat.Format32bppArgb) 

然后我将像素设置为Color.Black或Color.White。 我已经尝试使用Bitmap.SetPixel并使用Bitmap.LockBits将字节直接写入位图数据。

一旦位图准备就绪,我在Form.OnPaint覆盖中绘制它:

  pea.Graphics.DrawImage ( !this.bitmap , this.ClientRectangle , new Rectangle (0, 0, this.Width, this.Height) , GraphicsUnit.Pixel ) 

每个像素应该是黑色或白色,但我可以看到在边缘的像素是灰色的。

Solutions Collecting From Web of "在窗口上绘制位图时不希望的消除锯齿"

将InterpolationMode属性设置为NearestNeighbor,将PixelOffsetMode设置为None。

 pea.Graphics.InterpolationMode = InterpolationMode.NearestNeighbor; pea.Graphics.PixelOffsetMode = PixelOffsetMode.None; // or PixelOffsetMode.Half 

绘制位图未缩放是最好的。 在这种情况下,您可能需要使用ClientSize.Width和Height属性来初始化位图。 通过包含表单的边框和标题,现在可能会使位图太大。 我无法从片段中知道。