Augmenter frequence de l'evenement onmousemove [Résolu]

Signaler
Messages postés
28
Date d'inscription
dimanche 9 mars 2003
Statut
Membre
Dernière intervention
8 juin 2005
-
Messages postés
28
Date d'inscription
dimanche 9 mars 2003
Statut
Membre
Dernière intervention
8 juin 2005
-
bonjour,


pour mon application de dessin, il faudrait que l'evenement onmousemove arrive plus frequement. En effet, si je bouge ma souris rapidement, cela me pose probleme, car entre deux evenements onmousemove, la souris a pu se deplacer de beaucoup de pixels, et j'aimerais que l'evenement soit genere a chaque fois que la souris bouge d'un pixel (dans le meilleur des cas)...


Si vous avez la reponse ou des pistes..


merci

3 réponses

Messages postés
702
Date d'inscription
vendredi 21 mars 2003
Statut
Membre
Dernière intervention
1 octobre 2009
3
Je ne voudrais pas te décourager, mais .....



1 - Si tu as un écran d'une définition légèrement supérieure au VGA, il compte près ou plus de 1000 points par ligne,

2 - Déplacer la souris pour traverser l'écran en moins d'une seconde ne
représente pas une performance sportive de très haut niveau

3 - Des deux points précédents, il découle que le déplacement d'un
pixel peut prendre moins de la milliseconde, et je serais fort étonné
que la souris puisse transmettre à cette vitesse.



Donc petite vérif ...



Je mets un
[code.aspx?ID= 24090 TMMTimer] initialisé avec Interval = 1, un TMemo (Memo1) et roule ma poule : des ronds avec la souris !



procedure TForm1.MMTimer1Timer(Sender: TObject);

var

Point : TPoint;

begin

inc(Cpt);

if cpt <1000 then

begin

GetCursorPos(Point);

Memo1.lines.Add(IntToStr(Point.X)+' '+IntToStr(Point.Y));

end

else

MMTimer1.Enabled : = False;

end;




Résultats : Les coordonnées de la souris renvoyées par la fonction GetCursorPos

sont identiques 8 fois de suite (immobilité apparente alors que grace à
l'exceptionnelle souplesse de mon poignet, je n'ai pas marqué la
moindre pause!) puis sont modifiées de plusieurs pixels en X et Y à
l'acquisition suivante



Conclusion (provisoire sans doute, il y a plein d'esprits chipotteurs)




La souris transmet ses infos 125 fois par seconde, ce qui n'est déja pas mal !




Il faut maintenenant vérifier que l'évènement OnMouseMove suis bien le rythme !



On rajoute un évènement OnMouseMove



procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,

Y: Integer);

begin

Inc(Cpt2);

end;




Et c'est reparti !....



Au bout d'une seconde : Cpt2 = 127 !............ sans tricher !....


Je ne vois pas comment faire mieux ! Désolé !



Ken@vo

<hr size="2" width="100%">Code, Code, Codec !




http://www.pourflorenceethussein.org/



[%3C/body ]
Messages postés
28
Date d'inscription
dimanche 9 mars 2003
Statut
Membre
Dernière intervention
8 juin 2005

merci beaucoup pour ta reponse et le temps que t'y a passé... c'est super sympa

je ne vais cependant pas me demotiver, mais trouver un autre moyen au travers des threads pour palier a mon probleme..

merci
Messages postés
28
Date d'inscription
dimanche 9 mars 2003
Statut
Membre
Dernière intervention
8 juin 2005

c'est super, j'ai regarderais de plus pres le code demain apres
avoir teste l'executable, mais ca m'a l'air une bonne base pour moi

merci beaucoup pour ce source créé pour mon pb!!!

merci merci