2

このコードを使用して画像座標を取得できますが、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);

よろしくお願いします。

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 に答える