пересечение граф объектов

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

785412
Обычный пользователь
Обычный пользователь
 
Сообщения: 79
Зарегистрирован: 12.06.2009 (Пт) 19:25

пересечение граф объектов

Сообщение 785412 » 17.08.2009 (Пн) 21:09

есть два объекта - нарисованные в vs шэйпы или пикчербоксы(в них картинки). :eye: Как определить пересеаются они в данный момент или нет? Или если они пересекутся то сработает событие?

785412
Обычный пользователь
Обычный пользователь
 
Сообщения: 79
Зарегистрирован: 12.06.2009 (Пт) 19:25

Re: пересечение граф объектов

Сообщение 785412 » 18.08.2009 (Вт) 20:39

Или пересечение спрайтов?

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Re: пересечение граф объектов

Сообщение Nord777 » 18.08.2009 (Вт) 22:34

Код: Выделить всё
      If PBox1.Bounds.IntersectsWith(PBox2.Bounds) Then
         MsgBox("Пересекаются")
      Else
         MsgBox("Не пересекаются")
      End If
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5

785412
Обычный пользователь
Обычный пользователь
 
Сообщения: 79
Зарегистрирован: 12.06.2009 (Пт) 19:25

Re: пересечение граф объектов

Сообщение 785412 » 19.08.2009 (Ср) 8:42

Спасибо, работает. А если у меня будет круг? Может получать массив координат точек и убирать не нужные?

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Re: пересечение граф объектов

Сообщение Nord777 » 19.08.2009 (Ср) 12:00

Если не прямоугольник - посмотри на методы класса GraphicsPath
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5

785412
Обычный пользователь
Обычный пользователь
 
Сообщения: 79
Зарегистрирован: 12.06.2009 (Пт) 19:25

Re: пересечение граф объектов

Сообщение 785412 » 20.08.2009 (Чт) 14:45

:| Вроде не нашел...

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Re: пересечение граф объектов

Сообщение Nord777 » 20.08.2009 (Чт) 14:47

А чего искал то? :)
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5

785412
Обычный пользователь
Обычный пользователь
 
Сообщения: 79
Зарегистрирован: 12.06.2009 (Пт) 19:25

Re: пересечение граф объектов

Сообщение 785412 » 20.08.2009 (Чт) 15:03

смотрел в msdn функции, которые могли бы следить за пересечением. :|

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Re: пересечение граф объектов

Сообщение Nord777 » 20.08.2009 (Чт) 17:18

смотрел в msdn функции, которые могли бы следить за пересечением
Для чего искать в MSDN, когда у тебя есть имя класса? Смотреть надо было в Object Browser'e.

Код: Выделить всё
Imports System.Drawing.Drawing2D

Public Class Form1
   Dim Circle1 As New GraphicsPath()
   Dim Circle2 As New GraphicsPath()

   Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
      Circle1.AddArc(10, 10, 50, 50, 0.0!, 360.0!)
      Circle2.AddArc(70, 70, 50, 50, 0.0!, 360.0!)
   End Sub

   Private Sub Form1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseMove
      If Circle1.IsVisible(e.X, e.Y) Then
         Me.Cursor = Cursors.Hand
         If Me.Capture Then
            Circle1 = New GraphicsPath()
            Circle1.AddArc(e.X - 25, e.Y - 25, 50, 50, 0.0!, 360.0!)
            Me.Invalidate()
         End If
      Else
         Me.Cursor = Cursors.Default
      End If
   End Sub

   Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
      If Circle1.PointCount = 0 Then Exit Sub
      With e.Graphics
         .DrawPath(Pens.Red, Circle1)
         .DrawPath(Pens.Blue, Circle2)

         Dim Rgn As New Region(Circle1)
         Rgn.Intersect(Circle2)
         If Rgn.GetBounds(e.Graphics).IsEmpty Then
            .DrawString("Не пересекаются", Me.Font, Brushes.Black, 0, 0)
         Else
            .DrawString("Пересекаются", Me.Font, Brushes.Red, 0, 0)
         End If
      End With
   End Sub

End Class
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5

785412
Обычный пользователь
Обычный пользователь
 
Сообщения: 79
Зарегистрирован: 12.06.2009 (Пт) 19:25

Re: пересечение граф объектов

Сообщение 785412 » 20.08.2009 (Чт) 19:15

А можно картинку из файла грузить?

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Re: пересечение граф объектов

Сообщение Nord777 » 20.08.2009 (Чт) 19:23

А можно картинку из файла грузить?
Угадай.... :wink:
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5

785412
Обычный пользователь
Обычный пользователь
 
Сообщения: 79
Зарегистрирован: 12.06.2009 (Пт) 19:25

Re: пересечение граф объектов

Сообщение 785412 » 20.08.2009 (Чт) 19:26

ххгхгмхмх....мммм.мм.......да???!!!??!? :D :D :D

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Re: пересечение граф объектов

Сообщение Nord777 » 20.08.2009 (Чт) 19:54

Да! Да! Вы стали победителем нашей викторины!! :cheers:
Оставьте ваше координаты, чтобы мы смогли выслать вам приз.
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5

785412
Обычный пользователь
Обычный пользователь
 
Сообщения: 79
Зарегистрирован: 12.06.2009 (Пт) 19:25

Re: пересечение граф объектов

Сообщение 785412 » 20.08.2009 (Чт) 20:02

:king: Ура!! X=500053,Y=78778, Z=259

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Re: пересечение граф объектов

Сообщение Nord777 » 20.08.2009 (Чт) 23:38

Ура!! X=500053,Y=78778, Z=259

Уважаемый участник викторины!
К сожалению, по указанным вами координатам, мы не можем выслать вам приз,
т.к. наши курьерские челноки не летают в систему Альфа Центавра.
Искренне приносим вам свои извинения за причиненные неудобства и
просим подъехать за призом к нам в офис.

Адрес офиса:
Планета Земля,
89°25'С.Ш.,
78°40'З.Д.
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: пересечение граф объектов

Сообщение MIT » 21.08.2009 (Пт) 9:41

Nord777 писал(а):Адрес офиса:
Планета Земля,
89°25'С.Ш.,
78°40'З.Д.
В Арктике?
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Re: пересечение граф объектов

Сообщение Nord777 » 21.08.2009 (Пт) 12:12

В Арктике?
Это конфиденциальная информация. :mrgreen:
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 79

    TopList  
cron