System.Drawing.Drawing2D.Matrix 有一个非常方便的构造函数
public Matrix(RectangleF rect, PointF[] plgpts)
基本上你可以给出一个矩形和一个变换矩形的平行四边形,然后你得到相应的变换。就我而言,这非常有帮助。
不幸的是,我需要双精度矩阵。有谁知道我如何从矩形和平行四边形计算 System.Windows.Media.Matrix ?
这涉及到一些数学:
您需要计算 2 个碱基之间的转换矩阵。
首先,计算 Rectangle 的基向量,然后计算平行四边形的基向量。
然后,您可以使用例如高斯消元法来计算变换矩阵。
布莱克的答案是正确的,但是它可以更容易计算,因为你有一个简单的矩形。
您寻找一个 3x3 矩阵,它具有三个列向量 c1、c2 和 c3。c1 是 (1,0,0) 的图像,c2 是 (0,1,0) 的图像,c3 是 (0,0,1) 的图像。
(0,0,1) 是原点。您可以将其放置在矩形的左下角。所以 c3 是平行四边形的左下角。
(1,0,0) 是 x 轴的方向,长度为 1。因此,c1 是平行四边形的右下角和左下角的差向量除以矩形的宽度。
等于 (0,1,0)。因此,c2 是平行四边形左上角和左下角的差向量除以矩形的高度。
我应该补充一点,您必须为 c1 和 c2 添加 0 作为第三个组件,为 c3 添加 1。