Skip to content

Commit 7bbc4ec

Browse files
authored
Merge pull request #73 from icsharpcode/polyline
bugfix draw of polyline when zoomed
2 parents adc5ef1 + c2b849a commit 7bbc4ec

File tree

1 file changed

+8
-5
lines changed

1 file changed

+8
-5
lines changed

WpfDesign.Designer/Project/Extensions/DrawPolyLineExtension.cs

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)