Sharma Hussein Ответов: 2

Необработанная система. argumentexception.. Параметр недопустим


у меня есть этот код в vb. я хочу увеличить изображение

Что я уже пробовал:

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

      Dim scale_factor As Single = Single.Parse(txtScale.Text)  
       ' Get the source bitmap.

      Dim bm_source As New Bitmap(originalimage)

            ' Make a bitmap for the result.
            Dim bm_dest As New Bitmap( _
                CInt(bm_source.Width * scale_factor), _
                CInt(bm_source.Height * scale_factor))

            ' Make a Graphics object for the result Bitmap.
            Dim gr_dest As Graphics = Graphics.FromImage(bm_dest)

            gr_dest.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic

            'display the result
            picturebox1.Image = New Bitmap(bm_dest)
    end sub


но когда я запускаю код, он выбрасывает это исключение


Необработанная Система.ArgumentException.. Дополнительная информация: параметр недопустим

Wendelius

На какой строке выбрасывается исключение?

Sharma Hussein

здесь
Dim bm_dest как новое растровое изображение( _
Кинт(bm_source.Ширина * scale_factor), _
Кинт(bm_source.Высота * scale_factor))

2 Ответов

Рейтинг:
2

Wendelius

Глядя на линию

Dim gr_dest As Graphics = Graphics.FromImage(bm_dest)

Вы пытаетесь создать графический объект из пустого изображения, которое вы только что создали в предыдущей строке. Это намеренно или должно быть так
Dim gr_dest As Graphics = Graphics.FromImage(bm_source)


[ДОБАВЛЕН]
Поскольку исключение заключается в создании растрового изображения, убедитесь, что результат умножения выполним. Например, может ли быть так, что scale_factor равен 0.


Wendelius

См. обновленный ответ.

Рейтинг:
2

Sharma Hussein

Растровые изображения используют неуправляемые ресурсы, и это приводит к проблемам с нехваткой памяти. Я Завернул bm_source с помощью Using блоки операторов, и это, похоже, исправило ситуацию.