Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/25: Рейтинг темы: голосов - 25, средняя оценка - 5.00
12 / 12 / 4
Регистрация: 19.08.2012
Сообщений: 51

Считать цвет пикселя в PictureBox

25.04.2013, 16:56. Показов 5414. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Произвести построение и закраску фигуры.
На данный момент я пытаюсь считать цвет пикселя в месте пикчебокса, куда ткнул мышью пользователь.
Делаю это так
VB.NET
1
2
3
4
Dim b As New Bitmap(PictureBox1.Image)
Dim x As Integer = e.X
Dim y As Integer = e.Y
Dim c As Color = b.GetPixel(x, y)
Но появляется ошибка. Как можно сделать считывание цвета?
Простите, если вопрос глупый. Компьютерная графика началась недавно и vb не учил раньше.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.04.2013, 16:56
Ответы с готовыми решениями:

Как получить цвет пикселя в PictureBox?
Добрый день, Прошу помочь в реализации оператора GetPixel для Picturebox, перепробовал все возможные варианты кодов вот например: ...

Как получить цвет пикселя picturebox по клику мыши
Доброго всем времени суток! Как получить цвет пикселя picturebox по клику мыши (если можно ARGB - если я правильно выражаюсь), например для...

Считать значения цвета по RGB из TextBox и ввести цвет в PictureBox
Как считать значения цвета по RGB из TextBox и ввести цвет в PictureBox

9
 Аватар для Gemorg
178 / 153 / 10
Регистрация: 08.11.2012
Сообщений: 224
25.04.2013, 17:22
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

VB.NET
1
2
3
4
5
6
7
Private Sub PictureBox1_MouseDown(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDown
        Dim b As New Bitmap(PictureBox1.Image)
        Dim x As Integer = e.X
        Dim y As Integer = e.Y
        Dim c As Color = b.GetPixel(x, y)
        PictureBox1.BackColor = c
    End Sub
0
12 / 12 / 4
Регистрация: 19.08.2012
Сообщений: 51
25.04.2013, 17:27  [ТС]
Та же самая ошибка.

Необработанное исключение типа "System.NullReferenceException" произошло в System.Drawing.dll
Дополнительные сведения: Ссылка на объект не указывает на экземпляр объекта.
0
 Аватар для Nachrichter
649 / 601 / 92
Регистрация: 19.03.2012
Сообщений: 1,128
25.04.2013, 17:58
VB.NET
1
Imports System.Drawing
нет?
0
 Аватар для Gemorg
178 / 153 / 10
Регистрация: 08.11.2012
Сообщений: 224
25.04.2013, 18:04
Цитата Сообщение от Генри Посмотреть сообщение
Та же самая ошибка.

Необработанное исключение типа "System.NullReferenceException" произошло в System.Drawing.dll
Дополнительные сведения: Ссылка на объект не указывает на экземпляр объекта.
У меня тот же код работает исправно

Добавлено через 3 минуты
Я понял! У тебя нет изображения в PictureBox.Image.
Надо поставить изображение именно в Image (не BackGroundImage).
0
12 / 12 / 4
Регистрация: 19.08.2012
Сообщений: 51
25.04.2013, 18:09  [ТС]
Цитата Сообщение от Gemorg Посмотреть сообщение
У меня тот же код работает исправно

Добавлено через 3 минуты
Я понял! У тебя нет изображения в PictureBox.Image.
Надо поставить изображение именно в Image (не BackGroundImage).
Может я забыл упомянуть. Я не вставляю изображение, я его сам рисую. Рисую фигуру и закрашиваю её. Нахожу границу слева и справа и закрашиваю её линией и так всю фигуру. А именно для определения границы мне нужно определить, является ли следующий пиксель черного цвета. Но это другая история, это сам осилю.
0
 Аватар для Gemorg
178 / 153 / 10
Регистрация: 08.11.2012
Сообщений: 224
25.04.2013, 18:14
Цитата Сообщение от Генри Посмотреть сообщение
Может я забыл упомянуть. Я не вставляю изображение, я его сам рисую. Рисую фигуру и закрашиваю её. Нахожу границу слева и справа и закрашиваю её линией и так всю фигуру. А именно для определения границы мне нужно определить, является ли следующий пиксель черного цвета. Но это другая история, это сам осилю.
А где ты его рисуеш? В Imade или BackGrounImage?
Вообще лучше было бы весь код посмотреть чем гадать.
0
12 / 12 / 4
Регистрация: 19.08.2012
Сообщений: 51
25.04.2013, 18:21  [ТС]
Вот код
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
Class Form1
    Dim XP, YP, Xl, Xr, Yu, Yd, Xcenter, d, X, Y As Decimal
    Dim T As String
    Dim draw As System.Drawing.Graphics
    Dim Pen As New System.Drawing.Pen(System.Drawing.Color.Black)
    Dim Penpen As New System.Drawing.Pen(System.Drawing.Color.Honeydew)
    Dim P As New Point
    
 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        End
    End Sub
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        draw = PictureBox1.CreateGraphics
        ComboBox1.Items.Add("Круг")
        ComboBox1.Items.Add("Треугольник")
        ComboBox1.Items.Add("Прямоугольник")
        Xcenter = PictureBox1.Size.Width / 2
    End Sub
 
    Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
        If ComboBox1.Text = "Круг" Then
            draw.Clear(Color.White)
            XP = PictureBox1.Size.Width / 2 - 75
            YP = PictureBox1.Size.Height / 2 - 75
            draw.DrawEllipse(Pen, XP, YP, 150, 150)
            Xcenter = XP + 75
        End If
 
        If ComboBox1.Text = "Прямоугольник" Then
            draw.Clear(Color.White)
            XP = PictureBox1.Size.Width / 2 - 100
            YP = PictureBox1.Size.Height / 2 - 100
            draw.DrawRectangle(Pen, XP, YP, 200, 200)
            Xcenter = XP + 100
        End If
 
        If ComboBox1.Text = "Треугольник" Then
            draw.Clear(Color.White)
            d = 100
            XP = (PictureBox1.Size.Width - d) / 2
            YP = (PictureBox1.Size.Height + 2 * d / 3) / 2
            draw.DrawLine(Pen, XP, YP, XP + d, YP)
            draw.DrawLine(Pen, XP + d, YP, XP + d / 2, YP / 2)
            draw.DrawLine(Pen, XP + d / 2, YP / 2, XP, YP)
            Xcenter = XP + d / 2
 
        End If
 
    End Sub
 
    Private Sub PictureBox1_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDown, PictureBox1.MouseClick
        Xl = Xcenter
        Xr = Xcenter
 
'Здесь должно быть то, что выводит информацию о пикселе------------
        Yd = e.Y
        Yu = e.Y
        Dim b As New Bitmap(PictureBox1.Image)
        Dim x As Integer = e
'------------------------------------------------------------------------
        MsgBox("Done!")
    End Sub
 
 
End Class
Есть комбо бокс с 3 фигурами. После выбора эта фигура рисуется. Далее пользователь на произвольном месте кликает. И информацию о этом пикселе и надо узнать.
0
 Аватар для Gemorg
178 / 153 / 10
Регистрация: 08.11.2012
Сообщений: 224
25.04.2013, 18:40
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
Class Form1
    Dim XP, YP, Xl, Xr, Yu, Yd, Xcenter, d, X, Y As Decimal
    Dim T As String
    Dim draw As System.Drawing.Graphics
    Dim Pen As New System.Drawing.Pen(System.Drawing.Color.Black)
    Dim Penpen As New System.Drawing.Pen(System.Drawing.Color.Honeydew)
    Dim P As New Point
    Dim b As Bitmap
 
 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        End
    End Sub
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        b = New Bitmap(PictureBox1.Width, PictureBox1.Height)
        draw = Graphics.FromImage(b)
        ComboBox1.Items.Add("Круг")
        ComboBox1.Items.Add("Треугольник")
        ComboBox1.Items.Add("Прямоугольник")
        Xcenter = PictureBox1.Size.Width / 2
    End Sub
 
    Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
        If ComboBox1.Text = "Круг" Then
            draw.Clear(Color.White)
            XP = PictureBox1.Size.Width / 2 - 75
            YP = PictureBox1.Size.Height / 2 - 75
            draw.DrawEllipse(Pen, XP, YP, 150, 150)
            Xcenter = XP + 75
        End If
 
        If ComboBox1.Text = "Прямоугольник" Then
            draw.Clear(Color.White)
            XP = PictureBox1.Size.Width / 2 - 100
            YP = PictureBox1.Size.Height / 2 - 100
            draw.DrawRectangle(Pen, XP, YP, 200, 200)
            Xcenter = XP + 100
        End If
 
        If ComboBox1.Text = "Треугольник" Then
            draw.Clear(Color.White)
            d = 100
            XP = (PictureBox1.Size.Width - d) / 2
            YP = (PictureBox1.Size.Height + 2 * d / 3) / 2
            draw.DrawLine(Pen, XP, YP, XP + d, YP)
            draw.DrawLine(Pen, XP + d, YP, XP + d / 2, YP / 2)
            draw.DrawLine(Pen, XP + d / 2, YP / 2, XP, YP)
            Xcenter = XP + d / 2
 
        End If
        PictureBox1.Image = b
    End Sub
 
    Private Sub PictureBox1_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDown, PictureBox1.MouseClick
        Dim x As Integer = e.X
        Dim y As Integer = e.Y
        Dim c As Color = b.GetPixel(x, y)
        MsgBox("")
    End Sub
 
 
End Class
1
12 / 12 / 4
Регистрация: 19.08.2012
Сообщений: 51
26.04.2013, 07:37  [ТС]
О боже! Спасибо большое)

Добавлено через 12 часов 28 минут
У меня теперь такой глупый вопрос, а как нарисовать линию после этого? Теперь она не рисуется.

Добавлено через 23 минуты
Хотя я сам уже разобрался. Всем спасибо за помощь =)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.04.2013, 07:37
Помогаю со студенческими работами здесь

Получить цвет пикселя на pictureBox
Рисую на pictureBox стандартные линии, фигуры... Как определить цвет конкретного пикселя?

Считать цвет пикселя
Доброго времени суток, можно ли с помощью QT'a узнать какой пиксель по конкретным координатам экрана? (не в программе а в среде windows, к...

Как узнать цвет пикселя изображения в PictureBox
Всем привет:) Штука такая... грзим изображение (в pictureBox). Как узнать цвет определённого пикселя?

Как изменить цвет пикселя на картинке в pictureBox
Как изменить цвет определенного пикселя на картинке в pictureBox?

Возможно ли определять цвет пикселя PictureBox, не прибегая к использованию Bitmap
Возможно ли определять цвет пикселя, не прибегая к использованию Bitmap? Я так понял, что на нем создается графика, на которой все...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru