batt (Normal User)
Newbie
Messaggi: 1
Iscritto: 22/03/2009
|
dato un form ove sono stati tracciati più segmenti (line), orizzontali, verticali, obliqui, come rilevare con precisione quando il muose è si fermato su un qualsiasi punto di una linea?
grazie
|
|
theprogrammer (Normal User)
Guru^2
Messaggi: 2509
Iscritto: 28/01/2009
|
E come sono state tracciate queste linee?
|
|
antometal (Member)
Guru
Messaggi: 691
Iscritto: 12/09/2007
|
non ricordo bene...
gli oggetti line, hanno l' evento MouseOver?
|
|
theprogrammer (Normal User)
Guru^2
Messaggi: 2509
Iscritto: 28/01/2009
|
No ... l'oggetto line non ha alcun evento.
|
|
Louis (Normal User)
Pro
Messaggi: 150
Iscritto: 22/04/2008
|
Ciao batt,
premetto che il seguente codice non è tutta farina del mio sacco;
la routine sembra funzionare; per la prova attieniti alle istruzioni riportate:
Codice sorgente - presumibilmente VB.NET |
Option Explicit 'Cattura le coordinate del cursore del mouse: 'GetCursorPos dà la posizione del cursore , rispetto all’angolo superiore 'sinistro dello schermo. Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long 'Se si desidera conoscere la posizione del mouse, relativamente alla Frm 'in uso si deve convertire i valori con: Private Declare Function ScreenToClient Lib "user32" (ByVal hwnd As Long, lpPoint As POINTAPI) As Long 'La funzione ScreenToClient converte le coordinate x,y, ricavate con la funzione 'GetCursorPos, nelle coordinate relative all’angolo superiore sinistro di un form 'specificato. Private Type POINTAPI x As Long y As Long End Type Dim ret As Long Dim a As POINTAPI Dim b As Long Dim c As Long '----------------------------------------------------- ' Metti una Label ed un Timer sulla Frm ' e per provare disegna una Line sulla Frm: Private Sub Form_Load() Timer1.Interval = 1 End Sub '----------------------------------------------------- Private Sub Timer1_Timer() Call CoordinateMouse End Sub '----------------------------------------------------- Private Sub CoordinateMouse() 'Restituisce la posizione x,y relativamente allo schermo: ret = GetCursorPos(a) 'Converte la posizione x,y relativamente al form specificato(.hWnd): ScreenToClient Me.hwnd, a 'Le due funzioni, GetCursorPos e ScreenToClient, restituiscono la 'posizione del mouse con valori espressi in pixel. Per convertire i valori in Twip : b = a.x * Screen.TwipsPerPixelX c = a.y * Screen.TwipsPerPixelY Label1.Caption = "Valore coordinata X" & Space(1) & b & Space(3) & "Valore coordinata Y" & Space(1) & c End Sub
|
Spero che ti sia utile per risolvere il tuo problema.
|
|
marco1 (Normal User)
Pro
Messaggi: 157
Iscritto: 12/02/2009
|
Ma... non ho capito bene: vuoi sapere quando il mouse e perfettamente su una di esse?!
Ma... linee ogetti o linee disegnate...
|
|
Louis (Normal User)
Pro
Messaggi: 150
Iscritto: 22/04/2008
|
Ma, forse ho letto male il post! In sintesi, avevo inteso che occorresse rilevare le coordinate dei punti che giaciono su una o più linee posizionate o disegnate su una Frm. Eppure ero convinto di ciò; non è che é stata modificata la domanda ?
|
|
GrG (Member)
Guru^2
Messaggi: 3430
Iscritto: 21/08/2007
|
quando si modifica un post compare una scritta sotto, come questa:
Ultima modifica effettuata da GrG il 23/03/2009 alle 22:13 |
|
marco1 (Normal User)
Pro
Messaggi: 157
Iscritto: 12/02/2009
|
Louis! credo che voglia fare la base di un CAD ad oggetti!
.................................................................
Boh ma non lo possiamo sapere finche non c'elo specifica!
Ultima modifica effettuata da marco1 il 23/03/2009 alle 22:20 |
|