#c# #.net #windows #graphics #gdi
#c# #.net #Windows #графика #gdi
Вопрос:
Я выполняю рендеринг изображения в системе.Рисование.Растровое изображение и последующее рисование его в окне, однако я вижу, что края сглаживаются. Как это предотвратить?
Еще немного подробностей. Растровое изображение создается следующим образом:
new Bitmap (this.Width, this.Height, Imaging.PixelFormat.Format32bppArgb)
Затем я задаю пикселям любой цвет.Черный или цветной.Белый. Я пробовал использовать как Bitmap.SetPixel, так и записывать байты непосредственно в растровые данные с помощью Bitmap.Блокировки.
Как только растровое изображение готово, я рисую его в своей форме.Переопределение OnPaint:
pea.Graphics.DrawImage
( !this.bitmap
, this.ClientRectangle
, new Rectangle (0, 0, this.Width, this.Height)
, GraphicsUnit.Pixel
)
Каждый пиксель должен быть либо черным, либо белым, однако я вижу, что пиксели по краям серые.
Ответ №1:
Установите для свойства InterpolationMode значение NearestNeighbor, а для PixelOffsetMode — значение None.
pea.Graphics.InterpolationMode = InterpolationMode.NearestNeighbor;
pea.Graphics.PixelOffsetMode = PixelOffsetMode.None; // or PixelOffsetMode.Half
Лучше всего рисовать растровое изображение без масштаба. В этом случае вы, вероятно, захотите использовать ClientSize.Свойства ширины и высоты для инициализации растрового изображения. Велика вероятность того, что вы делаете растровое изображение слишком большим прямо сейчас, включая границу формы и заголовок. Я не могу сказать из фрагмента.
Комментарии:
1. Я почти уверен, что большинство людей хотят половину
PixelOffsetMode
.