Auteur de questions
Changer la position de la souris sur un Control.

Question
-
Bonjour,
Dans une appli WPF, il est possible d'obtenir la position de la souris sur un objet avec Mouse.GetPosition (objet)
Dans mon appli, je veux zoomer sur l'objet et, éventuellement, le recadrer dans la fenêtre support. Dans ce cas il me faut changer la position de la souris afin qu'elle reste positionnée précisément. Mais il n'existe pas de Mouse.SetPosition(objet, point).
Ma question : comment alors changer la position de cette souris ?
ci-joint le XAML du composant support que j'utilise.
<Viewbox x:Name="ImgViewbox" Margin="0,0" Stretch="None"> <Canvas x:Name="ImgCanvas"> <ContentControl x:Name="ImgContentCtrl"> <Grid x:Name="ImgGrid"> <Image x:Name="ImgObject"/> <Thumb x:Name="ImgThumb" Opacity="0" DragDelta="ImgThumb_DragDelta" MouseWheel="ImgThumb_MouseWheel" MouseMove="ImgThumb_MouseMove"/> </Grid> </ContentControl> </Canvas> </Viewbox>
Merci pour vos réponses.
Cordialement
Alain
Toutes les réponses
-
Bonsoir,
pour agir sur le pointeur de la souris il faux passer un peu en bas niveau vu que c'est windows qui gere la position de souris, apres une petite recherche j'ai trouver la fonction SetPosition de la dll User32, voici un petit code comme example :
[DllImport("User32.dll")] private static extern bool SetCursorPos(int X, int Y); private void ImgThumb_MouseEnter(object sender, MouseEventArgs e) { var center = ((Thumb)sender).ActualHeight / 2; var middle = ((Thumb)sender).ActualWidth / 2; var position = ((Thumb)sender).TransformToAncestor(this).Transform(new Point(0, 0)); SetCursorPos(Convert.ToInt32(position.X + middle), Convert.ToInt32(position.Y + center)); }
Good Coding;
-
-
je vous en pris Alain,
quelque part il faut s'adapter aux exigences archtecturales du OS, pour le meme cas sous linux ou OSX ca va etre le service de l'interface X ou un truc du genre ceci et du au fait que la gestion de la souris, pointeur se font a un niveau plus bas que celui offert par des framework de devellopement haut niveau, esperant qu'ils introduisent certain fonctionalites qui passents par des appels aux dll windows une interface standard, ainsi l'interaction serra plus fiable est plus securiser, enfin c'est ce que je pense!
ravis d'avoir contribuer
- Modifié Cherkaoui.Mouad lundi 22 octobre 2018 14:02