2017-09-06 2 views
0

Ich habe eine inkStroke in der inkcanvas, und ich benutze Methode GetInkPoints, um die Punkte Sammlung der Tintenstrich, wenn die Inkcanvas Größe 100 * 100 ist und ich den Tintenstrich auf eine Seite 200 * 200 zuordnen möchte, dann brauche ich Um den Tintenstrich zu skalieren, ist der Skalierungsfaktor 2, wenn ich Punkt x und y direkt zum Multiplizieren des Skalierungsfaktors verwende, wird die Form des Tintenstrichs manchmal verzerrt (zum Beispiel wenn der Tintenstrich ein Kreis ist), also weiß jemand, wie man transformiert zu einem Tintenstrich und bekomme dann seine Punkte?Wie erhalten Sie skalierte UWP-Tintenstriche?

Neu hinzugefügt: Ich finde, dass der Tintenstrich aus mehreren Bézier-Kurven besteht, also weiß jemand, wie man die Bézier-Kurve skaliert? Vielleicht kann ich jede Bézier-Kurve in einem Strich skalieren und einen neuen Tintenstrich erzeugen und seine Punkte erhalten.

Antwort

0

Wenn Sie die InkStroke skaliert haben, müssen wir nicht die Punkte in der InkCanvas erhalten. Wir können InkCanvas.InkPresenter.StrokeContainer.GetStrokes verwenden, um alle Tintenstriche in der Sammlung zu erhalten.

Wir können InkStroke.PointTransform Eigenschaft verwenden, um eine affine Transformationsmatrix für die einzelnen InkStroke zu setzen. Die Matrix3x2 liefert CreateScale, um eine Skalierungsmatrix aus den gegebenen X- und Y-Komponenten zu erstellen.

Zum Beispiel:

var MyStrokes= MyInkCanvas.InkPresenter.StrokeContainer.GetStrokes(); 
foreach (var stroke in MyStrokes) 
{ 
    stroke.PointTransform = Matrix3x2.CreateScale(2, 2); 
} 
+0

Eigentlich nur direkt Skalierungsfaktor Werke multiplizieren, ich mache nur ein paar Fehler zu meinen Skalierungsfaktor. Vielen Dank für Ihre Antwort. – newszer

Verwandte Themen