h3nk3rtofy (Normal User)
Rookie
Messaggi: 24
Iscritto: 23/01/2011
|
Ciao a tutti,
sto cercando di fare una "specie" di mappa dove vorrei far scorrere delle shape (o un immagine) e che queste si accorgano del colore del sfondo che stanno scorrendo e cambiarlo con un altro colore se non corrisponde ad uno specifico.
cioè: se passa shape1 e trova azzurro cambia giallo, ma se trova giallo lascia tutto com'è. E cosi se ce anche una shape2.
Per spostare l'oggetto non ho problemi ma ho dei dubbi per:
la scelta di far scorrere una shape e giusta? oppure devo (voi siete più esperti) pensare più facile e cioe far scorrere altra cosa nel form (una jpeg o altro) per poi rilevare e cambiare il colore del sfondo più facilmente?
e ancora:
mi conviene usare un'immagine come mappa oppure fare una specie di mappa (e qui non so come partire) dove costruire tutto? cioe strade, case, anche se grossolanamente perche mi serve solo per far scorrere qualcosa (che sembri un auto) e che riconosca lo sfondo.
questa è la prima volta che posto qui e spero di aver seguito tutte le regole del forum avendomi presentato in primis e poi cercato se ce già una soluzione al mio problema nel forum.
Saluto
ps: ho appena iniziato ma ho gia fatto un bel esercizio della paginazione della memoria in vb6 che spiega tutto il processo e appena capisco come si fa la posto (umilmente) forse serve a qualche studente come me.
|
|
poeo85 (Normal User)
Pro
Messaggi: 104
Iscritto: 27/01/2010
|
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
' 37 e 39
If KeyCode = 37 Then
Shape2.Left = Shape2.Left - 10
Else
If KeyCode = 39 Then
Shape2.Left = Shape2.Left + 10
End If
End If
If Shape2.Left + Shape2.Width > Shape1.Left Then
Shape2.FillColor = vbRed
Else
Shape2.FillColor = &H8000000F
End If
End Sub
fai un nuovo progetto ed incolla questo codice...è simile a ciò che vuoi fare?
usa le due freccette per spostare la shape2
Ultima modifica effettuata da poeo85 il 25/01/2011 alle 10:23 |
|
h3nk3rtofy (Normal User)
Rookie
Messaggi: 24
Iscritto: 23/01/2011
|
grazie provo e poi ti dico ,,,,
|
|
h3nk3rtofy (Normal User)
Rookie
Messaggi: 24
Iscritto: 23/01/2011
|
@ poeo85 0 altri;
ho provato il tuo codice ma non e quello che mi serve. qui sotto ho messo pezzo di codice ( anche un immagine) per esempio con il punto dove non riesco a capire.
In pratica mi serve gestire la strada che la shape percorre, cambiando il colore al suo passaggio. io ho scelto un shape che passa sopra un'altra shape perche mi sembrava la via piu breve ma se voi avete altre idee .....
pensavo di cercare un immagine in rete con disegnata già una mappa e poi gestire il passaggio della shape (o altro) sopra e il conseguente cambiamento di stato (colore) della strada, ma e troppo difficile per me.
codice in Visual Basic 6
Codice sorgente - presumibilmente VB.NET |
Private Sub Avviocmd_Click() ' qui faccio partire il timer1 Timer1.Enabled = True Timer1.Interval = 100 End Sub ' qui fermo il timer1 Private Sub stopcmd_Click() Timer1.Enabled = False End Sub Private Sub Timer1_Timer() ' qui faccio lampeggiare shape2 If Shape2.BackColor = 16776960 Then Shape2.BackColor = RGB(255, 255, 255) Else Shape2.BackColor = 16776960 End If 'qui sposto shape2 Shape2.Left = Shape2.Left + 10 ' qui sotto vorrei che shape2 (quella azzurra nell'immagine)mentre avanza, potesse controllare 'il colore delle shape sottostanti (shape1 gialle ) e ' cambiargli il colore al suo passaggio da gialle ad azzurre. 'se invece sono azzurre lasciarle come sono. ' ce solo un pezzetto ma, poi costruisco la mia mappa e la shape1 sarà la strada 'ps: ho provato una matrice di shape ma non so se va bene perche dovrebbero cambiare colore una alla volta. 'if shape2. ' End if End Sub
|
come sempre non possso che rigraziarvi anticipatamente.
Ultima modifica effettuata da h3nk3rtofy il 25/01/2011 alle 16:13 |
|
poeo85 (Normal User)
Pro
Messaggi: 104
Iscritto: 27/01/2010
|
ma tu vuoi fare una progress bar?
|
|
h3nk3rtofy (Normal User)
Rookie
Messaggi: 24
Iscritto: 23/01/2011
|
poeo85
progress bar? vai piano poeo ho appena iniziato. grazie comunque, ma non so cosa sia una progress bar.
mi sono messo in testa di fare un "oggetto" (qualsiasi shape immagine ecc) che simuli il cambiamento di stato della strada al suo passaggio in una mappa.
cioe che si veda che al passaggio cambi lo sfondo dove passa ma progressivamente.
allora pensavo di costruire una specie di mappa con strade fatte di shape ma perche altre strade non so percorrerle. sarebbe bello gestire un'immagine di una mappa e da qui far girare "l'oggetto" e cambiare il colore della strada della mappa al passaggio ma non mi azzardo a fare una cosa del genere troppo difficile.
quindi mi costruisco un specie di mappa le strade e pensavo di gestire la starda come spiegato sopra. ma ho quel problema che non capisco come far controllare alla shape il colore della shape sottostante e cambiarlo nel caso non fosse quello stabilito. una specie di scia che ricolora la strada se non e del colore prestabilito.
poi (qui so come fare) dovrò fare in modo che ridiventi il colore di prima dopo un tot di tempo.
ciao e sempre grazie
|
|
poeo85 (Normal User)
Pro
Messaggi: 104
Iscritto: 27/01/2010
|
quando arrivo a casa ci do un occhio...poi edito questo post
la progress bar era per intendere la barretta di caricamento per esempio quando fai l'upload (caricamento) di una immagine in internet che vedi quanto ha caricato e quanto manca...
comunque dopo provo a vedere una soluzione e te la propongo che domani a lavoro sarà l'inferno.
|
|
h3nk3rtofy (Normal User)
Rookie
Messaggi: 24
Iscritto: 23/01/2011
|
@ poeo85
allora le so fare le progress bar e belle anche.
ma io ho la neccessità di avere sotto controllo il progetto che ti parlavo.
mi basta capire come fare in modo che al passaggio della shape riconosca il colore della shape sottostante e cambi se non e quella prestabilita.
nell'esempio avevo pensato (ma non so se giusto) ad una matrice di shape: per evitare di controllare troppe shape che dovrò costruire su tutta la mappa.
nel senso che, se la shape che scorre sopra le altre sotto, sono costretto a dirgli :
se shape1 va sopra shape2 e shape 2 ha colorex cambia in colorey
se shape1 va sopra shape3 e shape 3 ha colorex cambia in colorey
e cosi via per tutta la strada della mappa e capirai che è alquanto paradossale
ecco perche pensavo ad una matrice di shape cosi bastava (penso) dirgli di cambiare con l'index della shape. e se ho capito bene avrebbe cambiato le shape una la volta al passaggio.
cioe (se è giusto)
se shape1 va sopra shape.index e shape.index ha colorex cambia in colorey
ed e ok cosi (sempre se e giusto quella che penso.
ciao troppo gentile e troppa pazienza hai. bye
|
|
poeo85 (Normal User)
Pro
Messaggi: 104
Iscritto: 27/01/2010
|
Codice sorgente - presumibilmente VB.NET |
Option Explicit Dim contatore As Integer Private Sub Avviocmd_Click() ' qui faccio partire il timer1 Timer1.Enabled = True Timer1.Interval = 100 End Sub Private Sub ClearCmd_Click() Dim i As Integer For i = 0 To shpSfondo.Count - 1 shpSfondo(i).BackColor = vbYellow Next i End Sub Private Sub Form_Load() shpMove.BackColor = vbBlue shpSfondo(0).BackColor = vbYellow contatore = 0 End Sub ' qui fermo il timer1 Private Sub stopcmd_Click() Timer1.Enabled = False End Sub Private Sub Timer1_Timer() ' qui faccio lampeggiare shape2 If shpMove.BackColor = 16776960 Then shpMove.BackColor = RGB(255, 255, 255) Else shpMove.BackColor = 16776960 End If 'qui sposto shape2 shpMove.Left = shpMove.Left + 10 If contatore >= shpSfondo.Count Then contatore = 0 Timer1.Enabled = False Else If shpMove.Left + shpMove.Width >= shpSfondo(contatore).Left Then shpSfondo(contatore).BackColor = vbBlue contatore = contatore + 1 End If End If End Sub
|
prova a vedere se va come volevi...c'è da sistemare qualcosa ma mi sembra che tu ce la possa fare
altrimenti sai dove trovarmi
Ultima modifica effettuata da poeo85 il 25/01/2011 alle 19:29 |
|