Задача — импортировать из .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