Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/25: Рейтинг темы: голосов - 25, средняя оценка - 4.72
1 / 1 / 0
Регистрация: 30.07.2012
Сообщений: 32
1

Ошибка при работе с изображениями: Параметр должен быть положительным и меньше ширины

04.02.2015, 11:01. Показов 4821. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вот попробовал написать программку по созданию рамдомного изображения, тоисть со случайным набором данных.
Может кто спец по (bitmap,random)?

У меня Visual Studio Выдает ошибку:
(Необработанное исключение типа "System.ArgumentOutOfRangeException" в Microsoft.VisualBasic.dll
Дополнительные сведения: Параметр должен быть положительным и меньше ширины.)

ну положительным то это понятно что не 0 или -1
В чем проблемка?

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
Public Class Form1
 
    Dim xWidth As Integer = 640
    Dim xHeight As Integer = 320
    Dim xBitmap = New Bitmap(xWidth, xHeight)
    Dim xRandom As System.Random = New System.Random()
 
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
 
        Dim X As Integer
        Dim Y As Integer
 
        Dim a As Integer
        Dim r As Integer
        Dim g As Integer
        Dim b As Integer
 
 
        For Y = 0 To xHeight
            For X = 0 To xWidth
 
 
                a = xRandom.Next(256)
                r = xRandom.Next(256)
                g = xRandom.Next(256)
                b = xRandom.Next(256)
 
                xBitmap.SetPixel(X, Y, Color.FromArgb(a, r, g, b))
            Next
        Next
 
        PictureBox1.Image = xBitmap
 
    End Sub
End Class
если вывести результат в Textbox таким образом:

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
        For Y = 0 To xHeight 
            For X = 0 To xWidth
 
 
                a = xRandom.Next(256)
                r = xRandom.Next(256)
                g = xRandom.Next(256)
                b = xRandom.Next(256)
 
                TextBox1.Text = "a: " & a & vbCrLf & "r: " & r & vbCrLf & "g: " & g & vbCrLf & "b: " & b & vbCrLf
 
            Next
        Next
то получаю такой результат:

a: 194
r: 4
g: 130
b: 227

В чем здесь проблема товарищи)?

Добавлено через 8 минут
Мне почему то кажется что это проблема где то в For но какая и в чем...?

Добавлено через 2 минуты
там же к примеру должно быть так:

a: 194 254 215 111 ... итд..
r: 4 5 123 200 110 ... итд..
g: 130 20 35 170 ... итд..
b: 227 10 2 1 ... итд..

Добавлено через 56 секунд
типа соответствуя ширине и высоте по количеству пикселей
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.02.2015, 11:01
Ответы с готовыми решениями:

Скопировать часть изображения, ошибка "параметр должен быть положительным и меньше высоты"
Реализую так : kap1.Width = b - a; Bitmap kap = new Bitmap(70, kap1.Width); ...

Ошибка "Длина не может быть меньше нуля" при работе с текстовым файлом
string lines = File.ReadAllLines("Ip_port.txt"); List<string> after = new...

Индекс за пределами диапазона. Индекс должен быть положительным числом, а его размер не должен превышать разме
int id = 0; id = groups; Ошибка. Индекс за пределами диапазона. Индекс должен быть...

Индекс за пределами диапазона. Индекс должен быть положительным числом, а его размер не должен превышать разме
Ребят, в общем вылазиет эта ошибка( Индекс за пределами диапазона. Индекс должен быть положительным...

2
Администратор
Эксперт .NET
17565 / 13787 / 5299
Регистрация: 17.03.2014
Сообщений: 28,264
Записей в блоге: 1
04.02.2015, 13:17 2
Лучший ответ Сообщение было отмечено bratkovsky как решение

Решение

bratkovsky, циклы должен быть такими:
VB.NET
1
2
For Y = 0 To xHeight-1
  For X = 0 To xWidth-1
1
1 / 1 / 0
Регистрация: 30.07.2012
Сообщений: 32
04.02.2015, 14:06  [ТС] 3
Все правельно!
И вроде раньше так и делал но как то не так по ходу)) Все работает, спасибо!

Добавлено через 18 минут
Кстате вот живой белый шум) у меня только в таком размере нормально работает
а у кого как работает и с каким размером изображения с той самой скоростью)?
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
Public Class Form1
 
    Dim xWidth As Integer = 50
    Dim xHeight As Integer = 50
    Dim xBitmap = New Bitmap(xWidth, xHeight)
    Dim xRandom As System.Random = New System.Random()
 
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Timer1.Interval = 10
        Timer1.Enabled = True
 
    End Sub
 
    Private Sub PictureBox1_Click(sender As Object, e As EventArgs) Handles PictureBox1.Click
 
    End Sub
 
    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
        Dim X As Integer
        Dim Y As Integer
 
        Dim a As Integer
        Dim r As Integer
        Dim g As Integer
        Dim b As Integer
 
 
        For Y = 0 To xHeight - 1
            For X = 0 To xWidth - 1
 
 
                a = xRandom.Next(256)
                r = xRandom.Next(256)
                g = xRandom.Next(256)
                b = xRandom.Next(256)
 
                xBitmap.SetPixel(X, Y, Color.FromArgb(a, r, g, b))
 
            Next
        Next
 
        PictureBox1.Image = xBitmap
 
    End Sub
End Class
0
04.02.2015, 14:06
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.02.2015, 14:06
Помогаю со студенческими работами здесь

Индекс за пределами диапазона. Индекс должен быть положительным числом, а его размер не должен превышать разме
Вот такая ошибка возникла - Как её исправить ?

Индекс должен быть положительным числом, а его размер не должен превышать размер коллекции
Подскажите, в чем ошибка? Выдает ошибку: Индекс за пределами диапазона. Индекс должен быть...

Ascii код символа при дешифровании на еденицу меньше чем должен быть
Добрый вечер. Написал простенькую программку шифра Цезаря, но столкнулся с небольшой проблемой....

Ошибка доступа при работе с изображениями в DrawGrid
//при нажатии на кнопку в 1 ячейке 1 столбце должно появляться изображение, но выдает ошибку...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru