picturebox3.location   otázka

VB.NET, WinForms

Ahoj

naprogramoval jsem , že když smáčknu klávesy W,S,A,D tak se mi pohybuje picturebox3 a ted bych chtěl udělat aby když se dotkne

pictureboxu4 tak aby to neco udělalo (např.msgbox)

zkusil jsem:

if picturebox3.location = new point(38,242) then

msgbox("test")

end if

ale když najedu pictureboxem3 na picturebox4 tak to nic neudělá.

Jak na to ?

Děkuji

nahlásit spamnahlásit spam 0 odpovědětodpovědět

To co děláte je testování bodu na bod, ale jak známo, PictureBoxy jsou obdélníkové tvary a je tedy třeba trochu víc detekování kolizí. Naštěstí pro tak jednoduché tvary jako obdélníky si můžete pomoct vestavěnými metodami .NET frameworku.

Nejdříve musíte získat pozici a velikost obou PictureBoxů, což snadno zjistíte z PictureBox.ClientRectangle vlastnosti. Tyto koordináty jsou relativní k levému hornímu rohu klientské oblasti formuláře. Pak pomocí Rectangle.IntersectsWith otestujete kolizi a pokud se podmínka splní, můžete provést cokoliv dalšího.

Dim rect1 = PictureBox1.ClientRectangle
Dim rect2 = PictureBox2.ClientRectangle
If rect1.IntersectsWith(rect2) Then
  MessageBox.Show("Kolize!")
End if

http://msdn.microsoft.com/en-us/library/... Control.ClientRectangle

http://msdn.microsoft.com/en-us/library/... Rectangle.IntersectsWith

nahlásit spamnahlásit spam 2 / 2 odpovědětodpovědět

Diky

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback