Мне нужно «вписать» GraphicsPath произвольной формы в определенное пространство (почти всегда прямоугольник или круг).
В настоящее время я масштабирую GraphicsPath с использованием объекта Matrix, и масштабирование работает нормально, но проблема заключается в получении коэффициентов масштабирования.
Лучшая техника, которую я могу придумать, - это преобразование GraphicsPath в область, преобразование прямоугольника или круга в область и выполнение:
rgnShape.Intersect(rgnCircle);
, а затем проверка:
rgnShape.IsEmpty()
Однако, это просто говорит мне, если форма слишком велика, чтобы уместиться, и становится необходимым уменьшить ее размер и повторить попытку (возможно, много, много раз).
Существует ли простой способ мгновенного вычисления коэффициентов масштабирования, чтобы он соответствовал полигону GraphicsPath, чтобы он полностью помещался в круг. Результатом должен быть самый большой многоугольник, который все еще полностью вписывается в круг.