【发布时间】:2015-04-30 21:56:17
【问题描述】:
我目前正在尝试在 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.MatrixSystem.Windows.Media.TranslateTransformSystem.Windows.Media.ScaleTransform
但是...TranslateTransform 和 ScaleTransform 类的 Transform 方法适用于 Point 而不适用于 Matrix。
如何在 C# 中对矩阵应用缩放和转换转换?
【问题讨论】:
-
@JohnOdom:感谢您的帮助。它不是重复的。实际上,
System.Windows.Media.Matrix类没有提供Scaling或Translation方法。但是 Xna 命名空间中的Matrix似乎有这些方法。我应该使用这个类吗? Xna 已被弃用,不是吗?
标签: c# matrix windows-phone transformation