Нежелательное сглаживание при рисовании растрового изображения в окне - PullRequest
3 голосов
/ 09 апреля 2011

Я рендерил изображение в System.Drawing.Bitmap и впоследствии рисую его в окне, однако я вижу, что края сглаживаются.Как это предотвратить?

Еще немного подробнее.Растровое изображение создается следующим образом:

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
                )

Каждый пиксель должен быть либо черным, либо белым, однако я вижу, что пиксели по краям серые.

1 Ответ

9 голосов
/ 09 апреля 2011

Установите для свойства InterpolationMode значение NearestNeighbor, а для PixelOffsetMode значение None.

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

Лучше всего рисовать немасштабированное растровое изображение.В этом случае вы, вероятно, захотите использовать свойства ClientSize.Width и Height для инициализации растрового изображения.Скорее всего, вы делаете растровое изображение слишком большим прямо сейчас, добавляя границу и заголовок формы.Я не могу сказать из фрагмента.

...