c# - Scale canvas to mouse position -


i trying implement zoom-functionality canvas using mouse wheel. zooming center position of canvas using centerx="0.5" , centery="0.5". change behavior zooming happens @ mouse position , know if possible scaletransform.

currently use following code:

<canvas width="500" height="500">     <canvas.layouttransform>         <scaletransform centerx="0.5" centery="0.5"                                 scalex="{binding zoom}"                                 scaley="{binding zoom}" />     </canvas.layouttransform> </canvas> 

a basic approach zoom canvas (or other uielement) @ specific position use matrixtransform rendertransform property

<canvas width="500" height="500" mousewheel="canvas_mousewheel">     <canvas.rendertransform>         <matrixtransform/>     </canvas.rendertransform> </canvas> 

and update matrix property of transform in mousewheel handler:

private void canvas_mousewheel(object sender, mousewheeleventargs e) {     var element = sender uielement;     var position = e.getposition(element);     var transform = element.rendertransform matrixtransform;     var matrix = transform.matrix;     var scale = e.delta >= 0 ? 1.1 : (1.0 / 1.1); // choose appropriate scaling factor      matrix.scaleatprepend(scale, scale, position.x, position.y);     transform.matrix = matrix; } 

Comments

Popular posts from this blog

get url and add instance to a model with prefilled foreign key :django admin -

android - Keyboard hides my half of edit-text and button below it even in scroll view -

css - Make div keyboard-scrollable in jQuery Mobile? -