我在inkStroke
中有一个inkcanvas
,如果墨迹大小为100 * 100并且我想要映射,我使用方法GetInkPoints
来获取墨迹的积分集合如果我直接使用点x和y来乘以比例因子,那么我需要缩小inkstroke,缩放因子是2,如果我直接使用点x和y来乘以比例因子,那么inkstroke的形状有时会变形(例如当inkstrole是一个圆圈),那么有谁知道如何转换为inkstroke然后得到它的点?
新添加:我发现inkstroke由几条Bézier曲线组成,所以有人知道如何缩放Bézier曲线吗?也许我可以在一个笔划中缩放每个Bézier曲线并生成一个新的inkstroke并得到它的分数。
答案 0 :(得分:0)
如果您想缩放InkStroke
,我们无需获取InkCanvas
中的积分。我们可以使用InkCanvas.InkPresenter.StrokeContainer.GetStrokes
来获取集合中的所有墨迹笔画。
我们可以使用InkStroke.PointTransform
属性设置仿射变换矩阵以应用于每个InkStroke
。 Matrix3x2
提供CreateScale
以根据给定的X和Y分量创建比例矩阵。
例如:
var MyStrokes= MyInkCanvas.InkPresenter.StrokeContainer.GetStrokes();
foreach (var stroke in MyStrokes)
{
stroke.PointTransform = Matrix3x2.CreateScale(2, 2);
}