Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
6 / 6 / 3
Регистрация: 07.04.2015
Сообщений: 123
1

Как создать несколько полигонов?

09.06.2015, 13:55. Просмотров 625. Ответов 5
Метки нет (Все метки)


Есть код:
vb.net
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    Dim R As Integer
    Dim Pol As Point() = New Point() {}
    Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal g As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.Click
        Array.Resize(Pol, Pol.Length + 1)
        Dim TB As New TextBox With {.Left = 1000, .Top = R * 20 + 15, .Parent = Me, .Width = 50, .Text = g.X.ToString & ", " & g.Y.ToString}
        Pol(R) = PictureBox1.PointToClient(Cursor.Position)
        R += 1
    End Sub
 
    Private Sub PictureBox1_DoubleClick(ByVal sender As System.Object, ByVal g As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.DoubleClick
        Dim grap As Graphics = PictureBox1.CreateGraphics
        Dim pn As New Pen(Color.DarkSlateBlue, 1)
        grap.DrawPolygon(pn, Pol)
    End Sub
Вот что делает:
1. динамически создает массив с textbox, я заполняю их,
2. при двойном клике рисуется полигон
Как сделать, чтобы при двойном клике возможно было прорисовывать новый полигон? Количество - должно быть неограниченным. Сейчас при добавлении новых точек продолжает рисовать первый. Благодарю за любую помощь.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.06.2015, 13:55
Ответы с готовыми решениями:

Как объединить несколько полигонов и создать из них один объект
Как объединить несколько полигонов(например острова), создать из них один объект, а потом добавить...

Как создать несколько консолей?
Здравствуйте. Я хотел бы задать вопрос. Как сделать так, чтобы при запуске программы была не одна...

Как создать несколько разделов?
Доброго времени суток. Есть контроллер "iptables" ( http://localhost:3000/iptables ) и к нему ...

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

5
170 / 170 / 52
Регистрация: 11.03.2014
Сообщений: 200
09.06.2015, 14:05 2
При двойном клике обнулить счетчик (R) и массив координат (Pol). Я же в прошлом посте написал. Почему отказались?
0
6 / 6 / 3
Регистрация: 07.04.2015
Сообщений: 123
09.06.2015, 16:33  [ТС] 3
Спасибо, я понял, но как это описать языком basic? Vb изучал совсем недавно. Более того, полигон нужно не перерисовать, а добавить новый
0
170 / 170 / 52
Регистрация: 11.03.2014
Сообщений: 200
09.06.2015, 17:16 4
Вот же. То есть для вашего даблклика:
vb.net
1
2
3
4
5
6
7
Private Sub PictureBox1_DoubleClick(ByVal sender As System.Object, ByVal g As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.DoubleClick
        Dim grap As Graphics = PictureBox1.CreateGraphics
        Dim pn As New Pen(Color.DarkSlateBlue, 1)
        grap.DrawPolygon(pn, Pol)
        Pol = New Point() {}
        R = 0
    End Sub
Я пропустил, что у вас там еще вопросы были. Неограниченное количество данный код решает, а про новое окно для каждого полигона - расскажите концепцию. При даблклике отрисовывается полигон и тут же открывается новая форма, в которой так же даблкликом можно отрисовать полигон и открыть новую форму?
0
6 / 6 / 3
Регистрация: 07.04.2015
Сообщений: 123
09.06.2015, 19:33  [ТС] 5
Концепция такова: у меня есть tabcontroll с темя вкладками. Начинаю рисовать полигон один, во вкладке номер один появляется listbox или другой контроль со списками, в listbox при клике последовательно добавляются строки с координатами точек. Во вкладке tabcontrol, добавляют кнопку "создать новый полигон". Кликаю по ней или как вариант даблклик по picturebox, появляется listbox куда вносятся координаты следующего полигона. Ну, а если открыта вторая или третья вкладка tabcontrol, то listbox с координатами создаётся там. Конечно лучше вместо listbox использовать раскрывающийся блок с textbox. Вот так. Надеюсь изложил ясно.
Собственно остался вопрос только с добавлением нового родительского поля. Все остальное уже кажется ясно.
0
170 / 170 / 52
Регистрация: 11.03.2014
Сообщений: 200
09.06.2015, 20:29 6
Добавляете в проект Usercontrol с picturebox, listbox и прочими причиндалами.
В главной форме создаете массив этих контролов, который, видимо, по кнопке будет ресайзиться на +1 и по той же кнопке будет открываться новый таб, в который будет подгружаться соответствующий контрол из массива.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.06.2015, 20:29

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Как создать несколько picturebox динамически
Как сделать так, чтобы по нажатию кнопки клавиатуры создавался picturebox на форме, при чем если...

Как создать сразу несколько папок
Не понимаю ,как записать в mkdir ,чтобы создавалось несколько папок (по циклу 100). Думал сделать...

Как создать сразу несколько RadioButton-ов?
У меня вот проблема с radiobutton вот создают потом перехожу в properties и не могу создать...

Как создать несколько текстовых файлов?
Т.е. мы спрашиваем у пользователя, сколько текстовых файлов создать? Он, например, пишет 4, и,...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.