.isPointInPath ()для обведенных линий и полилиний

Мне нужен механизм обнаружения события наведения мыши для линий, кривых и полилиний с разной шириной штриха, я уже сделал такой механизм для прямоугольников и эллипсов, поэтому я не новичок в Canvas API. Я выделяю все нарисованные объекты и определяю положение мыши над ними, когда прямоугольники или эллипсы имеют ширину штриха более 1 пикселя, я расширяю контур, чтобы он также содержал границу. Для линий и полилиний мне трудно понять, как мне их расширить, когда у меня есть lineWidth, например, 20 пикселей.

Мой вопрос: :как преобразовать линии, кривые и полилинии в некоторый путь формы, чтобы этот путь мог содержать всю их ширину?

red - path, black - stroked path

Мне нужно, чтобы созданный путь содержал ширину линии/кривой, представленную черным цветом на этом изображении.

----------Еще немного информации----------

попробую упростить задачу :У нас есть 2 точки (, представленные красным цветом на изображении ниже ), они образуют линию, которая имеет определенную формулу (y = mx + n ), мне нужно определить формулы перпендикулярных линий, которые пройдя через эти две начальные точки, после необходимо определить положение «синих» точек,которые находятся на расстоянии половины значения context.lineWidth, когда все точки определены, можно создать новый путь, используя последовательности moveTo ()и lineTo (). Этот метод должен быть применим для квадратичных кривых и кривых Безье с использованием контрольных точек. Проблема остается только в этих математических расчетах.

7
задан micnic 16 July 2012 в 17:41
поделиться