vb.net - Rotation maths not working correctly in WPF -
i'm using adorner
class create rotation thumb controls. here's relevant part of class:
private initialangle double private startvector vector private currentpoint, centerpoint point private rotatetransform rotatetransform private rotatethumb thumb public sub new(adornedelement uielement) mybase.new(adornedelement) addhandler rotatethumb.dragstarted, addressof handlerotatestart addhandler rotatethumb.dragdelta, addressof handlerotate end sub private sub handlerotatestart(sender object, e dragstartedeventargs) dim ae frameworkelement = trycast(me.adornedelement, frameworkelement) centerpoint = new point(ae.width / 2, ae.height / 2) dim startpoint point = mouse.getposition(ae.parent) startvector = point.subtract(centerpoint, startpoint) rotatetransform = trycast(ae.rendertransform, rotatetransform) if rotatetransform nothing ae.rendertransform = new rotatetransform(0, centerpoint.x, centerpoint.y) initialangle = 0 else initialangle = rotatetransform.angle end if end sub private sub handlerotate(sender object, e dragdeltaeventargs) dim ae frameworkelement = trycast(me.adornedelement, frameworkelement) currentpoint = mouse.getposition(ae.parent) dim deltavector vector = point.subtract(centerpoint, currentpoint) dim angle double = vector.anglebetween(deltavector, startvector) dim myrotatetransform = trycast(ae.rendertransform, rotatetransform) myrotatetransform.angle = initialangle + math.round(angle, 0) ae.invalidatemeasure() end sub protected overrides sub onrender(drawingcontext drawingcontext) mybase.onrender(drawingcontext) if mouse.leftbutton = mousebuttonstate.pressed drawingcontext.drawellipse(new solidcolorbrush(color.fromargb(100, 0, 255, 0)), new pen(brushes.green, 1), centerpoint, 10, 10) drawingcontext.drawellipse(new solidcolorbrush(color.fromargb(100, 255, 0, 0)), new pen(brushes.red, 1), currentpoint, 7, 7) end if end sub
while (kind of) rotate element, problem currentpoint
not appear mouse pointer (the red ellipse of onrender
doesn't follow mouse correctly). suspect might have rendertransform
apply on element affecting drawingcontext
. or mathematics i'm doing here?
Comments
Post a Comment