@@ -75,7 +75,7 @@ public void StartDrawItem(DesignItem clickedOn, Type createItemType, IDesignPane
7575 else
7676 createdItem . Properties [ Polygon . PointsProperty ] . CollectionElements . Add ( createdItem . Services . Component . RegisterComponentForDesigner ( new Point ( 0 , 0 ) ) ) ;
7777
78- new DrawPolylineMouseGesture ( createdItem , clickedOn . View , changeGroup ) . Start ( panel , ( MouseButtonEventArgs ) e ) ;
78+ new DrawPolylineMouseGesture ( createdItem , clickedOn . View , changeGroup , this . ExtendedItem . GetCompleteAppliedTransformationToView ( ) ) . Start ( panel , ( MouseButtonEventArgs ) e ) ;
7979 }
8080
8181 #endregion
@@ -86,13 +86,16 @@ sealed class DrawPolylineMouseGesture : ClickOrDragMouseGesture
8686 private DesignItem newLine ;
8787 private new Point startPoint ;
8888 private Point ? lastAdded ;
89+ private Matrix matrix ;
8990
90- public DrawPolylineMouseGesture ( DesignItem newLine , IInputElement relativeTo , ChangeGroup changeGroup )
91+ public DrawPolylineMouseGesture ( DesignItem newLine , IInputElement relativeTo , ChangeGroup changeGroup , Transform transform )
9192 {
9293 this . newLine = newLine ;
9394 this . positionRelativeTo = relativeTo ;
9495 this . changeGroup = changeGroup ;
95-
96+ this . matrix = transform . Value ;
97+ matrix . Invert ( ) ;
98+
9699 startPoint = Mouse . GetPosition ( null ) ;
97100 }
98101
@@ -106,7 +109,7 @@ protected override void OnMouseMove(object sender, MouseEventArgs e)
106109 {
107110 if ( changeGroup == null )
108111 return ;
109- var delta = e . GetPosition ( null ) - startPoint ;
112+ var delta = matrix . Transform ( e . GetPosition ( null ) - startPoint ) ;
110113 var diff = delta ;
111114 if ( lastAdded . HasValue ) {
112115 diff = new Vector ( lastAdded . Value . X - delta . X , lastAdded . Value . Y - delta . Y ) ;
@@ -153,7 +156,7 @@ protected override void OnMouseUp(object sender, MouseButtonEventArgs e)
153156 if ( changeGroup == null )
154157 return ;
155158
156- var delta = e . GetPosition ( null ) - startPoint ;
159+ var delta = matrix . Transform ( e . GetPosition ( null ) - startPoint ) ;
157160 var diff = delta ;
158161 if ( lastAdded . HasValue ) {
159162 diff = new Vector ( lastAdded . Value . X - delta . X , lastAdded . Value . Y - delta . Y ) ;
0 commit comments