Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Πώς θα πάρω τις συντεταγμένες του mouse σε c#?

Îåêßíçóå áðü ôï ìÝëïò lyros. Τελευταία δημοσίευση από το μέλος KelMan στις 25-10-2007, 15:49. Υπάρχουν 3 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  23-10-2007, 23:24 36532

    Πώς θα πάρω τις συντεταγμένες του mouse σε c#?

    Γειά σας και πάλι!

    Προσπαθώ να πάρω τις συντεταγμένες του mouse σε μια desktop εφαρμοφή με c# και Visual Studio 2005. Ψάχνοχτας βρήκα ένα τρόπο, αλλά εκ των υστέρων διαπίστωσα ότι παίρνω τις συντεταγμένες της οθόνης και όχι της εφαρμογής...

    [DllImport("user32.dll")]

    static extern bool GetCursorPos(ref Point myPoint);

    GetCursorPos(ref Pnt);

    xPosition = Pnt.X;

    yPosition = Pnt.Y;

    Πώς θα μπορούσα να πάρω τις συντεταγμένες του mouse στην φόρμα της εφαρμογής με c#??

    Ευχαριστώ πολύ!!


    panos
  •  24-10-2007, 00:28 36536 σε απάντηση της 36532

    Απ: Πώς θα πάρω τις συντεταγμένες του mouse σε c#?

    Θα πρέπει να γίνεις πιο συγκεκριμένος σχετικά με τις περιστάσεις κάτω από τις οποίες θες να πάρεις τις συντεταγμένες.

    Για παράδειγμα, το event MouseMove της φόρμας σου δίνει μέσα από τo MouseEventArgs τα properties Χ και Y που είναι οι συντεταγμένες σε pixels από την πάνω αριστερή γωνία της φόρμας. Όμως όταν περάσει ο pointer πάνω από άλλο control τότε δεν τρέχει το event αυτό. Οπότε θα πρέπει να βάλεις για κάθε control και το αντίστοιχο τέτοιο event. Όμως τότε θα έχεις τις συντεταγμένες σε σχέση με την πάνω αριστερή γωνία του control οπότε θα πρέπει να τις ανάγεις σε συντεταγμένες πάνω στη φόρμα, με τη διαφορά ότι μπορεί το control να είναι μέσα σε άλλο control, οπότε ...ουυυφφφ κουράστηκα. 

    Πάντως το API call δεν σου χρειάζεται. Η φόρμα, όπως και κάθε control έχουν δύο methods τα PointΤοForm (που κάνεις το ίδιο με το API call που βρήκες) και το PointToClient που ίσως σου χρησιμεύσει. Την τρέχουσα θέση μπορείς να την πάρεις από το Cursor.Position.


    Vir prudens non contra ventum mingit
  •  25-10-2007, 14:37 36603 σε απάντηση της 36536

    Απ: Πώς θα πάρω τις συντεταγμένες του mouse σε c#?

    Ευχαριστώ KelMan!

    Χρησιμοποίησα την PointToClient και δουλεύει!!

    Καθυστέρησα να κοιτάξω για τυχόν απαντήσεις και στο εντωμεταξύ έπαιξα λίγο με τα points. Ο τρόπος που ακολούθησα ήταν ο ίδιος που ανέφερα στο πρώτο post, και συνεχίζοντας αφαίρεσα από το κάθε X και Y point τα αντίστοιχα του Location της φόρμας. Είναι λίγο μπακαλίστικος ο τρόπος αλλά λειτουργεί κι αυτός. Είναι προγραμματιστικά λάθος ο τρόπος αυτός?? Μήπως θα παρουσιαζόταν κανένα σφάλμα αν η εφαρμογή έτρεχε έτσι σε άλλο pc (σχετικά με το Api call που χρησιμοποίησα)? 

    Σ'ευχαριστώ και πάλι για τη συμβουλή και το χρόνο σου!!


    panos
  •  25-10-2007, 15:49 36604 σε απάντηση της 36603

    Απ: Πώς θα πάρω τις συντεταγμένες του mouse σε c#?

    Γενικά, για τις .NET εφαρμογές ισχύει ο κανόνας ότι αν μπορούμε να κάνουμε κάτι χωρίς API call, προτιμούμε να το κάνουμε χωρίς API call.


    Vir prudens non contra ventum mingit
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems