Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Gestione Eventi picturebox
Forum - C# / VB.NET - Gestione Eventi picturebox

Avatar
ilnibbio (Normal User)
Rookie


Messaggi: 58
Iscritto: 13/05/2010

Segnala al moderatore
Postato alle 22:04
Giovedì, 30/12/2010
Salve a tutti e auguri! Volevo chiedervi se esiste un evento in VB che possa individuare un immagine quando si mette sopra questa immagine. In sostanza vorrei creare un ostacolo per questa pallina arancione, che può muoversi, ma che non deve farlo quando ha davanti un ostacolo. Qualcuno può aiutarmi??

Grazie a tutti e auguri!!!

PM
Avatar
ilnibbio (Normal User)
Rookie


Messaggi: 58
Iscritto: 13/05/2010

Up
-1
Down
V
Segnala al moderatore
Postato alle 22:08
Giovedì, 30/12/2010
Questa è una bozza della parte grafica del programma che avevo descritto prima


ilnibbio ha allegato un file: Immagine.png (6464 bytes)
Clicca qui per guardare l'immagine
PM
Avatar
()
Newbie


Messaggi:
Iscritto:

Up
1
Down
V
Segnala al moderatore
Postato alle 23:03
Giovedì, 30/12/2010
Non puoi mettere tutto in una picturebox perchè non esiste niente che riconosca sagome o forme in un immagine, dovresti farlo tutto da solo ma ci sono modi più semplici.

Usi il form come sfondo e metti una picturebox piccola che contiene solo la pallina rossa e poi metti un oggetto o altre picture box per ogni linea viola (nel tuo caso 4).

Supponimao che la picturebox contenete la pallina si chiami "pallina".
Supponiamo anche che la prima linea verticale (quella con cui nel tuo disegno si scontra) si chiami "ln".

Allora per verificare se pallina tocca ln dovresti controllare le coordinate dei 2 oggetti.

DEVI CONOSCERE LE SEGUENTI PROPRIETA':
top=punto in alto al centro
left=punto in basso a sinistra
height=altezza
width=larghezza

Queste proprietà sono applicabili sia a pallina che a ln

Quindi per vedere se il punto della pallina di destra tocca il punto della ln di sinistra devi fare come segue:

PUNTO DI DX=pallina.left+pallina.width

Quindi
SE pallina.left + pallia.width >= ln.left ALLORA l'evento si verifica.

Naturalmente dovresti controllare anche se pallina supera in altezza ln.
Poi non so come vuoi fare il programma.... ;)

Spero di esserti stato utile anche se non è facile riassumere un argomento simile in poche righe

Ultima modifica effettuata da il 30/12/2010 alle 23:05
PM
Avatar
()
Newbie


Messaggi:
Iscritto:

Up
1
Down
V
Segnala al moderatore
Postato alle 16:40
Venerdì, 31/12/2010
Dovresti spiegarmi meglio cosa deve fare quella pallina ;)

Comunque dovresti controllare ad ogni moviento che fa la pallina se va a contatto con gli ostacoli.

Ad esempio per verificare se la pallina tocca un ostacolo:
QUESTO CONTROLLO VALE PER QUALSIASI OSTACOLO
ln=ostacolo
pallina=pallina rossa

SE (pallina.left+pallina.width>=ln.left AND pallina.left+pallina.width<=ln.left+ln.width) OR (pallina.top<=ln.top + ln.height AND pallina.top - pallina.height>=ln.top) ALLORA la pallina tocca l'ostacolo


L'ho scritto velocemente quindi potrei aver fatto un paio di errori ma dovrebbe ssere giusto ;)
La cosa che incasina di più è che nel form la coordinata Y=0 invece di essere il punto più basso è il punto più alto ;)

PM
Avatar
ilnibbio (Normal User)
Rookie


Messaggi: 58
Iscritto: 13/05/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 15:41
Venerdì, 31/12/2010
Grazie andrea, avevo pensato anche io ad un algoritmo del genere, solo che non riesco a gestire quando la pallina supera il primo ostacolo, e se x esempio resta in altezza sopra l'ostacolo e scendere quando non è più sopra. sai aiutarmi?

PM
Avatar
dedalux (Normal User)
Pro


Messaggi: 155
Iscritto: 14/02/2009

Up
0
Down
V
Segnala al moderatore
Postato alle 8:33
Domenica, 02/01/2011
Quando devi controllare la posizione della pallina lo fai sia in senso orizzontale che verticale, quindi una volta utilizzando le proprietà width, location.Y, left, e right dei controlli, l'altra usando height, location.X, top e bottom.

PM