2

I can get image coordinate using this code.But I want to do the same by using Matrix.

        private int _angle = 90;
        float scaleFactorX = (float)resizeWidth / (float)originalWidth;
        float scaleFactorY = (float)resizeHeight / (float)originalHeight;

        graphics.TranslateTransform((float)(width / 2), (float)(height / 2));
        graphics.ScaleTransform(scaleFactorX, scaleFactorY);
        graphics.RotateTransform(_angle);
        graphics.TranslateTransform(-(float)originalWidth / 2, -(float)originalHeight /2);
        graphics.TransformPoints(System.Drawing.Drawing2D.CoordinateSpace.World, System.Drawing.Drawing2D.CoordinateSpace.Device, point);

Thank you all in advance.

4

2 回答 2

1

如果您传递Matrix类型实例,您可能想要使用Graphics.MultiplyTransform 。

Matrix 类型有一种对其应用变换的方法:

Matrix mx = new Matrix(); 

旋转

规模

翻译

我建议按照这个顺序而不是先进行平移,因为在这些情况下很容易被旋转中心和旋转轴弄乱。

于 2013-06-27T09:17:01.897 回答
0

当您可以学习如何使用矩阵变换坐标时,这是一个非常有用的资源。您需要操作:翻译、旋转 - 并且它们的描述也很好。

http://msdn.microsoft.com/en-us/library/ms536397%28VS.85%29.aspx

于 2013-06-27T09:18:52.287 回答