Аналог System.Drawing.Drawing2D.Matrix.VectorTransformPoints
От: ShibaOn Россия http://shibaon.ru
Дата: 10.01.08 05:39
Оценка:
Задача — импортировать из .SVG полигоны, некоторые из которых представлены в виде прямоугольников с матрицей трансформации. Этот метод позволяет выполнить трансформацию, однако работает он только с целыми числами. Из-за этого импортированные полигоны не выглядят прямоугольниками, скорее параллелепипедами. Очень нужен аналог этого метода, работающий с числами с плавающей запятой. Может, кто-нибудь посоветует библиотеку или какой-нибудь другой метод решения. Вот код (здесь я умножаю значения на 100, чтобы увеличить точность, но это не помогает ):

public SVGPolygon ToSVGPolygon()
        {
            SVGPolygon result = new SVGPolygon();

            if (_Matrix != null)
            {
                Point[] pts = new Point[4];

                pts[0] = new Point((int)(X * 100), (int)(Y * 100));
                pts[1] = new Point((int)((X + Width) * 100), (int)(Y * 100));
                pts[2] = new Point((int)((X + Width) * 100), (int)((Y + Height) * 100));
                pts[3] = new Point((int)(X * 100), (int)((Y + Height) * 100));

                _Matrix.VectorTransformPoints(pts);

                foreach (Point pt in pts)
                {
                    result.Points.Add(new SVGPoint((pt.X) / 100 + Matrix.OffsetX, (pt.Y / 100 + Matrix.OffsetY)));
                }                 
            }                     
            else
            {
                result.Points.Add(new SVGPoint(X, Y));
                result.Points.Add(new SVGPoint(X + Width, Y));
                result.Points.Add(new SVGPoint(X + Width, (Y + Height)));
                result.Points.Add(new SVGPoint(X, (Y + Height)));
            }

            return result;
        }



10.01.08 12:07: Перенесено модератором из '.NET' — AndrewVK
Мой блог: shibaon.ru
Re: Аналог System.Drawing.Drawing2D.Matrix.VectorTransformPo
От: SuhanovSergey  
Дата: 10.01.08 06:47
Оценка: 1 (1)
Здравствуйте, ShibaOn, Вы писали:

SO>Задача — импортировать из .SVG полигоны, некоторые из которых представлены в виде прямоугольников с матрицей трансформации. Этот метод позволяет выполнить трансформацию, однако работает он только с целыми числами.


Есть перегруженная версия Matrix.TransformPoints (PointF[])
Re[2]: Аналог System.Drawing.Drawing2D.Matrix.VectorTransfor
От: ShibaOn Россия http://shibaon.ru
Дата: 10.01.08 09:12
Оценка:
Спасибо
Мой блог: shibaon.ru
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.