c# - How to drag RenderTransform with mouse in WPF? -


i want make viewer move , zoom children mouse. so, create class transformviewer : usercontrol , override event methods. have problem onmousemove. when translate rendertransform, onmousemove called continuously, if don't move mouse. , rendertransform shakes.

protected override void onmousemove(mouseeventargs e) {         point mouse = e.getposition( );         vector delta = point.subtract( mouse, oldmouse );         oldmouse = mouse;          if(keyboard.iskeydown( key.leftshift ) &&             (e.leftbutton == mousebuttonstate.pressed || e.rightbutton == mousebuttonstate.pressed)) {             matrix matrix = transform.matrix;             matrix.translate( delta.x, delta.y );             transform.matrix = matrix;              e.handled = true;             rendertransform = transform;         }      } 

why so?

better change rendertransform of child.

public class transformviewer : usercontrol {      private readonly matrixtransform transform = new matrixtransform();     private point pressedmouse;       protected override void onmousedown(mousebuttoneventargs e) {         pressedmouse = transform.inverse.transform( e.getposition( ) );     }       protected override void onmousemove(mouseeventargs e) {         if(e.middlebutton == mousebuttonstate.pressed) {             point mouse = transform.inverse.transform( e.getposition( ) );             vector delta = point.subtract( mouse, pressedmouse ); // delta old mouse current mouse             var translate = new translatetransform( delta.x, delta.y );             transform.matrix = translate.value * transform.matrix;              ((uielement) content).rendertransform = transform;             e.handled = true;         }     }       protected override void onmousewheel(mousewheeleventargs e) {             float scale = 1.1f;             if(e.delta < 0) scale = 1f / scale;             point mouse = e.getposition( );              matrix matrix = transform.matrix;             matrix.scaleat( scale, scale, mouse.x, mouse.y );             transform.matrix = matrix;              ((uielement) content).rendertransform = transform;             e.handled = true;     }  } 

Comments

Popular posts from this blog

Delphi XE2 Indy10 udp client-server interchange using SendBuffer-ReceiveBuffer -

Qt ActiveX WMI QAxBase::dynamicCallHelper: ItemIndex(int): No such property in -

Enable autocomplete or intellisense in Atom editor for PHP -