2017-09-06 81 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