Модераторы: diadiavova, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> PictureBox немогу понять 
V
    Опции темы
Machaon
Дата 16.9.2008, 21:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


КаРолЬ АсьКи МуАЛя
*


Профиль
Группа: Участник
Сообщений: 160
Регистрация: 12.8.2008
Где: М.о. Красногорск

Репутация: нет
Всего: 3



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

Вот мой пример:

Код

Public Class Form1
    Dim PosMapX As Integer
    Dim PosMapY As Integer

    Private Sub PictureBox1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint
        e.Graphics.DrawEllipse(Pens.Red, PosMapX, PosMapY, 6, 6) 'Рисование Кружка по полученым координатам при клике
    End Sub

    Private Sub PictureBox1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove
        X.Text = System.Windows.Forms.Cursor.Position.X - Me.Location.X - PictureBox1.Location.X - 5 'Геморойное определение координат курсора мыши X
        Y.Text = System.Windows.Forms.Cursor.Position.Y - Me.Location.Y - PictureBox1.Location.Y - 31 'Геморойное определение координат курсора мыши Y
        PictureBox1.Refresh() 'Обновление PictureBox-
    End Sub

    Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click
        PosMapX = X.Text 'Глобальная переменная  PosMapX равна координатам положения мыши X
        PosMapY = Y.Text 'Глобальная переменная  PosMapY равна координатам положения мыши Y
    End Sub
End Class


Это сообщение отредактировал(а) Machaon - 16.9.2008, 21:22

Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  WindowsApplication1.rar 58,38 Kb
PM MAIL ICQ Skype   Вверх
diadiavova
Дата 16.9.2008, 22:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



Код

Public Class Form1
   
    Dim PosMapX As Integer
    Dim PosMapY As Integer
    Dim points As New List(Of Point)
    Private Sub PictureBox1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint
        For Each p As Point In points
            e.Graphics.DrawEllipse(Pens.Red, p.X, p.Y, 6, 6)
        Next
    End Sub
    Private Sub PictureBox1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove
        PosMapX = e.X
        PosMapY = e.Y
        PictureBox1.Refresh()
    End Sub
    Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click
        Dim p As New Point(PosMapX, PosMapY)
        points.Add(p)
    End Sub
End Class



--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
Machaon
Дата 16.9.2008, 23:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


КаРолЬ АсьКи МуАЛя
*


Профиль
Группа: Участник
Сообщений: 160
Регистрация: 12.8.2008
Где: М.о. Красногорск

Репутация: нет
Всего: 3



Во спс то что нужно а вот как потом удалить определённый кружок например кликнув правой кнопкой.
PM MAIL ICQ Skype   Вверх
diadiavova
Дата 17.9.2008, 01:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



Вообще-то - о таких вещах сразу писать надо. Если тебе потом удалять надо(тем более таким способом), то ты изначально не правильно подошёл к вопросу. В этом случае в качестве кружочков лучше использовать контролы. Удалить и в данном случае не проблема. Вопрос в том, как ты собираешься определять, какой именно кружок удалять?
Для того, чтобы удалить кружок, надо просто убрать из коллекции points ту точку, которая отвечает за его прорисовку и обновить вид. Можно, конечно, определить по какому месту кликнули и перебрать все точки, выполнив некоторые несложные вычисления. Тогда возникает вопрос, как быть, если два кружочка рядом. Или того хуже - один "залез" на другой? 

С конролами этого гемороя не будет. Просто надо отслеживать события этих конролов. Но тогда и код будет совсем  другим.



--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
Machaon
Дата 17.9.2008, 02:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


КаРолЬ АсьКи МуАЛя
*


Профиль
Группа: Участник
Сообщений: 160
Регистрация: 12.8.2008
Где: М.о. Красногорск

Репутация: нет
Всего: 3



Мдаа во загрузил меня буду думать.

Добавлено через 2 минуты и 21 секунду
А неподскажеш как мне рисовать квадраты например нажимаю в одной точке тащу до другой и между точками появляется квадрат
и их тоже можно добавлять многа, зделай пажалста пример.
СПС
PM MAIL ICQ Skype   Вверх
Machaon
Дата 17.9.2008, 02:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


КаРолЬ АсьКи МуАЛя
*


Профиль
Группа: Участник
Сообщений: 160
Регистрация: 12.8.2008
Где: М.о. Красногорск

Репутация: нет
Всего: 3



Да и как прочитать определенный Points в текст бокс
PM MAIL ICQ Skype   Вверх
diadiavova
Дата 17.9.2008, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



Насчёт рисования квадратов загляни сюда, там речь об эллипсах, да и рисуются они в форме, но принцип один.
Что до поинтса в текстбокс - не понял. Объясни поточней, что надо. 
Кстати, у тебя тут ещё пара вопросов на которые я не стал отвечать, потомучто не понял. Да и других ответов вроде нет.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
Machaon
Дата 28.9.2008, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


КаРолЬ АсьКи МуАЛя
*


Профиль
Группа: Участник
Сообщений: 160
Регистрация: 12.8.2008
Где: М.о. Красногорск

Репутация: нет
Всего: 3



С Этой бедой разобрался.
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума VB .NET
diadiavova
  • Прежде чем задать вопрос, воспользуйтесь поиском: возможно Ваш вопрос уже обсуждался и на него был получен ответ.
  • Если такой же вопрос не найден, не стоит задавать свой вопрос в любую тему, создайте новую.
  • Заголовок темы должен отображать ее суть.
  • Содержание поста должно описывать проблему понятно, но в то же время, по возможности, лаконично. Сначала следует описать суть вопроса, потом можно привести пример кода, не вынуждайте других участников угадывать в чем Ваша проблема - телепатов здесь нет.
  • Будьте взаимно вежливы и дружелюбны.
  • При оформлении сообщений используйте форматирование, примеры кода заключайте в теги [CODE=vbnet][/CODE].
  • Также ознакомьтесь с общими правилами, действующими на всем форуме.
  • Если вопрос решен, не забывайте помечать тему решенной(вверху темы есть ссылка). Кроме того, если Вы хотите отблагодарить участников, оказавших помощь в решении, можно повысить им репутацию, в случае, если у Вас менее 100 сообщений в форуме и функция изменения репутации Вам недоступна, можете написать сюда.
  • Общие вопросы по программированию на платформе .NET обсуждаются здесь.
  • Литература по VB .NET обсуждается здесь.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, diadiavova.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB .NET | Следующая тема »


 




[ Время генерации скрипта: 0.1042 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.