我目前正在尝试在C#中移植以下Java或Swift代码(在Windows Phone库中):
这里是Java代码:
public Matrix zoom(float scaleX, float scaleY, float x, float y)
{
final Matrix save = new Matrix();
save.set(anotherMatrix);
save.postScale(scaleX, scaleY, x, y);
return save;
}
这里是Swift代码:
public func zoom(#scaleX: CGFloat, scaleY: CGFloat, x: CGFloat, y: CGFloat) -> CGAffineTransform
{
var matrix = CGAffineTransformTranslate(_touchMatrix, x, y);
matrix = CGAffineTransformScale(matrix, scaleX, scaleY);
matrix = CGAffineTransformTranslate(matrix, -x, -y);
return matrix;
}
基本上,在Windows Phone的C#中,我有以下类:
System.Windows.Media.Matrix
System.Windows.Media.TranslateTransform
System.Windows.Media.ScaleTransform
但是...... Transform
和TranslateTransform
类的ScaleTransform
方法适用于Point
,而不适用于Matrix
。
如何在C#中应用缩放并将变换转换为矩阵?
答案 0 :(得分:0)
@ john-odom试图说的是你需要将两个变换相乘以便将它们的组合效果应用于Point。 Matrix.Multiply方法可以帮助您完成所需的工作,指向基于XNA的答案的链接并不是指向那些特定类型/库,而是让您了解其背后的原理。 / p>