Когда растровое изображение масштабируется, оно выглядит следующим образом

У меня есть изображение, нарисованное в графическом блоке, и мне нужно масштабировать его с помощью трекбара. Но это происходит всякий раз, когда я увеличиваю масштаб, и если я продолжаю масштабировать - он становится более размытым.

enter image description here

Мой код:

Изображение Рисование

public LayerClass ImageDrawing(LayerClass.Type img, Bitmap bm, Rectangle imgRect, String filepath, int angle, PaintEventArgs e)
    {
        bm = ImageClass.GrayscaleImage(bm);
        bm = MakeTransparentImage(bm);

        e.Graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
        bm = RotateImage(bm, angle);
        imgRect = new Rectangle((int)(Shape.center.X - (bm.Width / 2)), (int)(Shape.center.Y - (bm.Height / 2)), (int)bm.Width, (int)bm.Height);
        e.Graphics.DrawRectangle(new Pen(Color.Red, 1), imgRect);
        e.Graphics.DrawImage(bm, imgRect);

        this.imageBitmap = bm;
        this.filePath = filePath;
        this.rotationAngle = angle;
        this.location = location;
        this.imageRect = imgRect;
        return new LayerClass(LayerClass.Type.Image, this, filePath, imgRect);
    }

Масштабирование

    private void trackBar_ScaleImg_Scroll(object sender, EventArgs e)
        {
            //Width Scaling
            if(rb_WidthImage.Checked)
            {
                imgRect.Width = trackBar_ScaleImg.Value;
                imgRect.X = (int)(Shape.center.X - (imgRect.Width / 2));
                lbl_imgWidth.Text = Math.Round((trackBar_ScaleImg.Value * 25.4) / 96).ToString();
                toolTip_Scroll.SetToolTip(trackBar_ScaleImg, lbl_imgWidth.Text);

                ImageBitmap = new Bitmap(ImageBitmap, new Size(imgRect.Width, imgRect.Height));
            }
}

Как вы это определяете. Это меняет соотношение сторон? или просто становится блюри

TheGeneral 26.10.2018 09:02

Размер изображения изменится, но он также станет размытым.

TerribleDog 26.10.2018 09:06

Это нормально, если вы слишком сильно увеличите масштаб любого изображения, оно сначала станет размытым. Потом пиксельный. Это характерно для цифровых изображений. Также стоит отметить, что изображения в памяти вашего приложения не сжимаются. Сжатие применяется к дисковым хранилищам и передаче по сети. Любое изображение в памяти занимает ширину x высоту x глубину цвета.

Christopher 26.10.2018 09:17

@Christopher происходит другое, если я масштабирую его сильно вверх или вниз, если раз, он становится таким imgur.com/a/LUGCxig

TerribleDog 26.10.2018 09:21

Это нормально. Не увеличивайте или уменьшайте многократно. Вместо этого сохраните копию оригинала и используйте ее только как источник для масштабирования !!

TaW 26.10.2018 10:17

@TaW, как мне это сделать?

TerribleDog 26.10.2018 10:19

Я имею в виду использовать растровое изображение для масштабирования и копию для сохранения изображения.

TerribleDog 26.10.2018 10:24

Просто сохраните исходное растровое изображение в отдельной переменной и не меняйте его, а покажите только измененную копию.

Nyerguds 13.11.2018 15:26
0
8
34
0

Другие вопросы по теме