怎么实现inkCanvas中的所有元素进行平移,放大缩小
们要用它的 Stroke.Transform() 方法去实现转换:
#Stroke.Transform Method
ht tp:/ /msdn.microsoft.c om/en-us/library/system.windows.ink.stroke.transform(v=vs.110).aspx
Parameters:
transformMatrix:
Type: System.Windows.Media.Matrix
The Matrix object defining the transformation.
applyToStylusTip:
Type: System.Boolean
true to apply the transformation to the tip of the stylus; otherwise, false.
可以看到第一个参数是一个Matrix对象,它有很多方法去允许你实现想要的变换。
#Matrix.Scale Method
htt p:/ /msdn.micro soft.c om/en-us/library/system.windows.media.matrix.scale(v=vs.110).aspx
#Matrix.Translate Method
htt p: //msdn.m icrosoft.c om/en-us/library/system.windows.media.matrix.translate(v=vs.110).aspx
例如,想要比例缩放为之前的一半,并且X轴和Y轴分别移动50,我们可以这样:
private void Button_Click(object sender, RoutedEventArgs e)
{
foreach( Stroke s in inkSig.Strokes )
{
Matrix myMatrix = new Matrix();
myMatrix.Scale(0.5, 0.5);
myMatrix.Translate(50, 50);
s.Transform(myMatrix,false);
}
}
效果截图:
2024-07-20 广告