c# - Scaling of a rotated element -
let's suppose have element want rotate , scale in visual designer: user should able drag edges , graphics should scale appropriately.
rotation entered in degree.
following fact issue rotated element:
when top left point dragged not width , height change, top left position well. when top right point dragged size changes, , y-position
if element rotated (wpf rendertransform, rotated around it's center) behaviour must change accordingly, , dont know how. assuming element rotated 90° point top left top right one.
means have transform something, i'm totally stumped i'm afraid
i'm looking behaviour implemented in graphical program.
user drags points of bounding box , graphic should projected inside box.
how can problem solved in wpf?
elements drawn derive uielement, can access transform properties needed. solution should work rotation entered.
i'd appreciate if me, or point me in right direction.
edit:
know how scale , rotate elements. desired result element fits in box user dragged. problem more math related wpf related.
edit:
downvoting without providing me suggestion on improve.
in order understand problem try following:
create new wpf project, add uielement , rotate it, 90° example.
remember margin before drag, , drag bottom right point somewhere. can see margin (= position) changes well. question how calculate compensation give user desired result when dragging. because if not change position compensate scale, result weird , doesn't behave expected.
compensation depends on scale of element. obviously.
please refer following picture:
see here canvas.top , canvas.left property before dragged bottom right point, , below after dragged bottom right point.
http://imageshack.us/photo/my-images/268/beforeaftert.png/?sa=0
maybe have @ http://www.codeproject.com/articles/22952/wpf-diagram-designer-part-1 resize part covers these issues. basic idea recognize element click resizing (left corner, right corner etc.) there 'math' stuff set left , top of canvas.
Comments
Post a Comment