Programming with .NET - Generalhttp://forums.silverlight.net//17.aspx/1?Programming+with+NET+GeneralGeneral discussions around authoring Silverlight .NET applications.Mon, 01 Jan 0001 00:00:00 -05001717295http://forums.silverlight.net//p/5651/17295.aspx/1?Capture+Mouse+Moving+DirectionCapture Mouse Moving Direction <p>How can i capture mouse moving direction?</p> <p>I want to know mouse direction that Is it anticlockwise or is it clockwise?</p> <p>Is there any way to know?</p> <p>In my application i want to rotate arrow as per mouse moving direction. If my mouse is moving in clockwise then i want to increase the rotate angle otherwise i want to decrease the rotate angle of arrow.&nbsp;</p> 2007-10-12T09:59:22-04:0017297http://forums.silverlight.net//p/5651/17297.aspx/1?Re+Capture+Mouse+Moving+DirectionRe: Capture Mouse Moving Direction <p>You will hate this answer, but you could track the last&nbsp;couple of x,y coordinates, and then calculate if its anti-clockwise by comparing the current X,Y to the previous.</p> 2007-10-12T10:05:23-04:0017459http://forums.silverlight.net//p/5651/17459.aspx/1?Re+Capture+Mouse+Moving+DirectionRe: Capture Mouse Moving Direction <p>Thanks chirshay_uk for your reply,</p> <p>Ok i can compare last couple of x,y coordinates. But how can i know that my mouse is moving in clockwise or anticlockwise direction.&nbsp;</p> <p>There isn't any specific x,y coordinates from that i can capture the mouse direction.</p> <p>Can you or anybody help me more?</p> <p>&nbsp;</p> <p>-Nirav&nbsp;</p> 2007-10-15T10:47:22-04:0017465http://forums.silverlight.net//p/5651/17465.aspx/1?Re+Capture+Mouse+Moving+DirectionRe: Capture Mouse Moving Direction <p>like&nbsp;Chrishay said you capture the last and the current mouse position then </p> <p>&nbsp;if Xlast - Xcurrent = a negative number you are moving clockwise else you are moving anticlockwise</p> <p>think it's something like that [*-)]</p> 2007-10-15T12:14:48-04:0017466http://forums.silverlight.net//p/5651/17466.aspx/1?Re+Re+Capture+Mouse+Moving+DirectionRe: Re: Capture Mouse Moving Direction <p>Exactly, Mimiste</p> 2007-10-15T12:27:52-04:0017472http://forums.silverlight.net//p/5651/17472.aspx/1?Re+Re+Capture+Mouse+Moving+DirectionRe: Re: Capture Mouse Moving Direction <p>No it will not work this way, you will need to calculate the angle between the two vectors originating from the center of the rotated object to the new point and the previous point</p> <p>for example to rotate an object based on mouse drag:</p> <p>onRotateMouseDown = function(sender, args){<br> &nbsp;&nbsp;&nbsp; this.isRotating = true;<br> &nbsp;&nbsp;&nbsp; sender.captureMouse();<br> &nbsp;&nbsp;&nbsp; <br> &nbsp;&nbsp;&nbsp; this.lastXPosition = args.getPosition(sender).x - (sender.width/2);<br> &nbsp;&nbsp;&nbsp; this.lastYPosition = args.getPosition(sender).y - (sender.height/2);<br> &nbsp;&nbsp;&nbsp; this.angle = sender.renderTransform.angle;<br> }</p> <p>onRotateMouseMove = function(sender, args){<br> &nbsp;&nbsp;&nbsp; if(this.isRotating){<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; var x = (args.getPosition(sender).x - (sender.width/2));<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; var y = (args.getPosition(sender).y - (sender.height/2));<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; var theta = Math.atan2(y, x) - Math.atan2(this.lastYPosition, this.lastXPosition);<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; var angleInDegrees = Math.round(theta*180/Math.PI);<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; sender.renderTransform.angle = this.angle &#43; angleInDegrees;<br> &nbsp;&nbsp;&nbsp; }<br> </p> <p>}&nbsp;</p> <p>onRotateMouseUp = function(sender){<br> &nbsp;&nbsp;&nbsp; this.isRotating = false;<br> &nbsp;&nbsp;&nbsp; sender.releaseMouseCapture();<br> } <br> </p> 2007-10-15T14:15:00-04:0017473http://forums.silverlight.net//p/5651/17473.aspx/1?Re+Re+Capture+Mouse+Moving+DirectionRe: Re: Capture Mouse Moving Direction <p>And by the way I am assuming in the code that that the object rendertransform is of type rotatetransform&nbsp;</p> 2007-10-15T14:16:01-04:0017474http://forums.silverlight.net//p/5651/17474.aspx/1?Re+Re+Capture+Mouse+Moving+DirectionRe: Re: Capture Mouse Moving Direction <p>Hi yaseer and all,</p> <p>Thanks yaseer for your reply with explanation.</p> <p>Please can you convert or give me code in C#.Net?</p> <p>Actually i am rotation Line Object.</p> <p>I can rotate my line on both direction but line is not rotating properly when my mouse rotates.</p> <p>My Code is:</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Point actPos = e.GetPosition(MyCanvas);</p> <p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp; if (oActiveLine != null &amp;&amp; sElementName == &quot;Line&quot;)<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //Fidning the angle using Triangle theorem.<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; double a, b, c;<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; X.X = oActiveLine.Left;<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; X.Y = oActiveLine.Top;<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Y.X = structStartPosition.X;<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Y.Y = structStartPosition.Y;<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Z.X = actPos.X;<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Z.Y = actPos.Y;<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; b = System.Math.Sqrt(((Y.X - oActiveLine.Left) * (Y.X - oActiveLine.Left)) &#43; ((Y.Y - oActiveLine.Top) * (Y.Y - oActiveLine.Top)));<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; oActiveLine.Height = System.Math.Sqrt(((actPos.X - oActiveLine.Left) * (actPos.X - oActiveLine.Left)) &#43; ((actPos.Y - oActiveLine.Top) * (actPos.Y - oActiveLine.Top)));<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a = System.Math.Sqrt(((Y.X - Z.X) * (Y.X - Z.X)) &#43; ((Y.Y - Z.Y) * (Y.Y - Z.Y)));<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c = System.Math.Sqrt(((X.X - actPos.X) * (X.X - actPos.X)) &#43; ((X.Y - actPos.Y) * (X.Y - actPos.Y)));<br> <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; double angle = System.Math.Acos((b * b &#43; c * c - a * a) / (2 * b * c)) * (180.0 / System.Math.PI);<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (((Z.Y &lt; X.Y) &amp;&amp; (Z.X &lt; Y.X)) || ((Z.Y &gt; X.Y) &amp;&amp; (Z.X &gt; Y.X)))<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; oActiveLine.Angle -= angle;<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (((Z.Y &lt; X.Y) &amp;&amp; (Z.X &gt; Y.X)) || ((Z.Y &gt; X.Y) &amp;&amp; (Z.X &lt; Y.X)))<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; oActiveLine.Angle &#43;= angle;<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; angle = 0.0;<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a = b = c = 0;<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br> <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; structStartPosition = actPos;</p> 2007-10-15T14:22:10-04:00