Качество выводимого в picturebox изображения

199
27 февраля 2019, 21:20

Есть битмап размером 100x100 пикселей, он растягивается и отображается в pictureBox формы,и выглядит это следующим образом (пискели мыльные, нету четкости изображения) Но при этом, если сохранить битмап как изображение и открыть его в программе windows для просмотра фото, растянув, то мы увидим следующую картину

На втором скриншоте чёткость заметно выше, с чем это может быть связано? И как добиться такой же четкости в pictureBox на форме?

Answer 1

Что-бы изображение не выглядело размитым при масштабировании, Вам нужно изменить режим интерполяции: Graphics.InterpolationMode = InterpolationMode.NearestNeighbor;

Можно сделать это вручную, при отрисовке изображения:

using (Graphics g = Graphics.FromImage(bmp))
{
    g.InterpolationMode = InterpolationMode.NearestNeighbor;
    g.DrawImage(bmp, new Rectangle(Point.Empty, bmp.Size));
}

или создать наследника PictureBox-а и переопределить OnPaint:

public class CustomPictureBox : PictureBox
{
    private System.Drawing.Drawing2D.InterpolationMode interpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor;
    public System.Drawing.Drawing2D.InterpolationMode InterpolationMode 
    {
       get => interpolationMode;
       set
       {
          interpolationMode = value;
          this.Invalidate(); //перерисовываем
       }
    }
    protected override void OnPaint(PaintEventArgs pe)
    {
       pe.Graphics.InterpolationMode = interpolationMode;
       base.OnPaint(pe);
    }
}
READ ALSO
Cоздание backend для сайта. Отличие от .NET, .NET Core, .NET Framework, .NET MVC

Cоздание backend для сайта. Отличие от .NET, .NET Core, .NET Framework, .NET MVC

Пишу backend на PHPСобираюсь перейти на C#

232
Нет проекта ADO.NET Entity Data Model

Нет проекта ADO.NET Entity Data Model

При изучении Entity столкнулся с проблемойНет самого проекта ADO

206
Wpf MVVM выделить ListView?

Wpf MVVM выделить ListView?

Пишу Wpf MVVM приложение, в рантайме заполняю элемент ListView строками, после заполнения я могу только кликать по элементам, но не могу выделять...

265
Установка AdminLte на Yii2 advanced

Установка AdminLte на Yii2 advanced

Установил расширение https://githubcom/dmstr/yii2-adminlte-asset/

216