在矩阵上缩放和转换变换

时间:2015-04-30 21:56:18

标签: c# matrix windows-phone transformation

我目前正在尝试在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

但是...... TransformTranslateTransform类的ScaleTransform方法适用于Point,而不适用于Matrix

如何在C#中应用缩放并将变换转换为矩阵?

1 个答案:

答案 0 :(得分:0)

@ john-odom试图说的是你需要将两个变换相乘以便将它们的组合效果应用于Point。 Matrix.Multiply方法可以帮助您完成所需的工作,指向基于XNA的答案的链接并不是指向那些特定类型/库,而是让您了解其背后的原理。 / p>