2017-09-06 59 views
0

我有一个inkStrokeinkcanvas,我使用方法GetInkPoints获取墨迹笔画的点集合,如果inkcanvas大小是100 * 100,并且我想将墨迹笔画映射到200 * 200,那么我需要比例因子是2,如果我直接用点x和y乘以比例因子,有时候墨迹笔画的形状会变形(例如当墨迹圈是圆的时候),所以有人知道如何进行变换到一个inkstroke并获得它的积分呢?如何获得缩放的UWP笔划点?

新增加的内容:我发现inkstroke是由几个Bézier曲线组成的,所以有人知道如何缩放Bézier曲线吗?也许我可以一举缩放每个Bézier曲线并生成一个新的笔划并获得它的点数。

回答

0

如果要缩放InkStroke,我们不需要获取InkCanvas中的点。我们可以使用InkCanvas.InkPresenter.StrokeContainer.GetStrokes来获取集合中的所有笔画。

我们可以使用InkStroke.PointTransform属性来设置一个仿射变换矩阵来应用于每个InkStrokeMatrix3x2提供CreateScale以从给定的X和Y分量创建比例矩阵。

例如:

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

其实只是直接乘以比例因子的作品,我只是做我的比例因子一些错误。谢谢您的回答。 – newszer