如何获得缩放的UWP inkstroke积分?

时间:2017-09-06 08:28:40

标签: uwp scale inkcanvas

我在inkStroke中有一个inkcanvas,如果墨迹大小为100 * 100并且我想要映射,我使用方法GetInkPoints来获取墨迹的积分集合如果我直接使用点x和y来乘以比例因子,那么我需要缩小inkstroke,缩放因子是2,如果我直接使用点x和y来乘以比例因子,那么inkstroke的形状有时会变形(例如当inkstrole是一个圆圈),那么有谁知道如何转换为inkstroke然后得到它的点?

新添加:我发现inkstroke由几条Bézier曲线组成,所以有人知道如何缩放Bézier曲线吗?也许我可以在一个笔划中缩放每个Bézier曲线并生成一个新的inkstroke并得到它的分数。

1 个答案:

答案 0 :(得分: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);
}