Autore Topic: Trascinare una picture box  (Letto 1520 volte)

Offline Ferdinando88

  • Gamberetto
  • *
  • Post: 44
    • Mostra profilo
Trascinare una picture box
« il: 19 Marzo 2012, 10:52:24 »
Come faccio a fare in modo che un utente possa spostare la picturebox presente in un form semplicemente trascinandola con il mouse ? avete idee ???  :o

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Trascinare una picture box
« Risposta #1 il: 19 Marzo 2012, 12:09:53 »
Intercetta gli eventi di movimento dell'oggetto, dopo di che procedi con l'analisi della posizione del mouse e lo spostamento dell'oggetto.

La cosa è valida per tutti gli oggetti, a meno che tu non abbia attivato proprietà di automatismo contenute nei contenitorie oggetti (es. Expand)...

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Trascinare una picture box
« Risposta #2 il: 19 Marzo 2012, 13:26:12 »
Una cosa di questo genere ?

Codice: gambas [Seleziona]

Public Sub PictureBox1_MouseMove()
 
  With  PictureBox1
    .X = Mouse.ScreenX - 40
    .Y = Mouse.ScreenY - 90
  End With

End
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Trascinare una picture box
« Risposta #3 il: 19 Marzo 2012, 13:45:44 »
Ad esempio...  :D

Riguardo la posizione, potresti fare affidamento al parent, dato che il tutto si riferisce alle coordinate del padre.
Puoi anche usare Screen, ovviamente... vedi tu

In G3, nella classe Mouse, sono presenti alcune nuove proprietà (simulabili in G2) che ti permettono di stabilire il delta dello spostamento, e quindi agire di conseguenza.
In G2 lo puoi sempre fare, ovviamente scrivendo tu stesso codice ad-ok. Di solito si utilizza una variabile di classe, in cui memorizzare di volta in volta la posizione intercettata nell'evento precedente, calcolando quindi il delta...

Offline Top Fuel

  • Gran Maestro dei Gamberi
  • *****
  • Post: 959
    • Mostra profilo
Re: Trascinare una picture box
« Risposta #4 il: 19 Marzo 2012, 19:18:19 »
C'è anche l'evento MouseDrag che sembra fatto apposta per questo. Almeno credo, non sono esperto. :D
Dear youtube administrators, your search bar is broken. When I type the letter "J" it appears justin bieber when it should appear Jimi Hendrix. Fix this, please.

Offline Ferdinando88

  • Gamberetto
  • *
  • Post: 44
    • Mostra profilo
Re: Trascinare una picture box
« Risposta #5 il: 19 Marzo 2012, 21:41:05 »
Ok, diciamo che funziona bene, però ho questo problema....vorrei mettere un pulsante che una volta premuto generi su un form una picturebox che poi possa essere anche spostata...è possibile farlo ? come ?
Grazie a tutti siete stati molto utili

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Trascinare una picture box
« Risposta #6 il: 19 Marzo 2012, 22:39:43 »
Ok, diciamo che funziona bene, però ho questo problema....vorrei mettere un pulsante che una volta premuto generi su un form una picturebox che poi possa essere anche spostata...è possibile farlo ? come ?
Grazie a tutti siete stati molto utili

Una cosa come questa ?

Codice: gambas [Seleziona]

r As Integer
 m[1000] As PictureBox

Public Sub Form_Open()

End

Public Sub Button1_Click()  ' ogni volta che clicchi sul Button, crei una signorina PictureBox...

Inc r

  m[r] = New PictureBox(Me) As "pb"
  
  With m[r]
    .W = 40
    .H = 40
    .X = 25
    .Y = 35
    .Border = Border.Raised
  End With

End


Public Sub pb_MouseMove()  '...la puoi portare a passeggio per il Form...
  
  With m[r]  
   .X = Mouse.ScreenX - 40  
   .Y = Mouse.ScreenY - 90  
 End With
  
End

Public Sub pb_Menu()  ' cliccando con il tasto destro del mouse...

'...su una delle PictureBox create...
  Dim Obj As Object = Last

' ...sadicamente la distruggi ! eheheheh !
  Obj.Delete
  
End

« Ultima modifica: 22 Marzo 2012, 16:37:15 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Ferdinando88

  • Gamberetto
  • *
  • Post: 44
    • Mostra profilo
Re: Trascinare una picture box
« Risposta #7 il: 19 Marzo 2012, 23:25:06 »
Praticamente perfetta la spiegazione, però non mi permette di definire che immagine deve avere la picturebox...

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Trascinare una picture box
« Risposta #8 il: 20 Marzo 2012, 01:13:03 »
Praticamente perfetta la spiegazione...
Le guide e le spiegazioni devono essere - possibilmente - "brevi", "chiare" e "pratiche" !


....però non mi permette di definire che immagine deve avere la picturebox...
Ahi ! Ahi, Ahi ! Ferdina' !  :violent:  Il forum è pieno di esempi !  Qualcosa c'è anche nella WIKI !
Sei fortunato che non t'ha letto Ceskho  :police: !   :P

Comunque dentro  With m[r] inserisci questo:
Codice: gambas [Seleziona]

.Picture = Picture.Load("percorso_del_file_immagine_che voglio_mostrare_nella_PictureBox")


Esempio pratico:
Codice: gambas [Seleziona]

.Picture = Picture.Load(User.Home & "/immagine.gif")


Insomma, come puoi ben vedere, quel Picture.Load(...) ti consente di caricare un file immagine.
« Ultima modifica: 22 Marzo 2012, 16:34:05 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Ferdinando88

  • Gamberetto
  • *
  • Post: 44
    • Mostra profilo
Re: Trascinare una picture box
« Risposta #9 il: 20 Marzo 2012, 10:19:33 »
 8) Grazie vuott....sarà il nostro piccolo segreto  8)