Рисование линий между точками в UIImage - PullRequest
1 голос
/ 03 июня 2011

У меня есть XML-файл, например:

<PointCollection>
<Point x="2453.553575623344" y="1011.755461592671"/>
<Point x="2260.662874593102" y="1102.865398167724"/>
<Point x="2259.547233128629" y="1276.871740662439"/>
<Point x="2293.490150676198" y="1444.799859055673"/>
<Point x="2375.667740528206" y="1696.692036645525"/>
<Point x="2480.350615792477" y="1865.216215309236"/>
<Point x="2757.972180274506" y="1877.125440451022"/>
<Point x="2939.521225544476" y="1715.15279036209"/>
<Point x="3052.739622134972" y="1443.013389711065"/>
<Point x="2997.359072452096" y="1135.740662438337"/>
<Point x="2774.050404375987" y="1030.338971106413"/>
</PointCollection>

Мне нужно нарисовать линии между этими точками и создать форму поверх UIIMage, чтобы комментировать определенную область на этом изображении. Например, я собираюсь нарисоватьлиния между точкой x = "2453.553575623344" y = "1011.755461592671" и точкой x = "2260.662874593102" y = "1102.865398167724", которые имеют координаты x и y в соответствии с разрешением изображения.Как я могу это сделать?Спасибо.

1 Ответ

4 голосов
/ 03 июня 2011

Короче говоря, вы должны:

  • Определить, сколько пространства модели вы хотите отобразить на вашем изображении.
  • Из контекста чертежа получить текущий CGContextRef (UIGraphicsGetCurrentContext() в iOS).
  • Переведите и масштабируйте свою систему координат, манипулируя текущей матрицей преобразования (CTM), чтобы вы могли рисовать в терминах координат модели, а не координат растрового изображения.Изменение системы координат для вашего чертежа позволяет системе выполнять всю математику, чтобы подогнать ваши строки под фактические биты изображения.
  • Затем, несколько раз:
    • Использовать CGPath / CGMutablePath чтобы описать форму.
    • Установите цвет обводки / заливки (или любой из множества других параметров).
    • Обведите / обведите контур соответствующим образом.

Обратите внимание, что если вы рисуете поверх существующего изображения, а не создаете полностью новое изображение, вам может потребоваться нарисовать текущее изображение поверх чистого холста до преобразования CTM.

Вы можете не понимать ничего из этого, пока не прочитаете о рисовании с использованием CoreGraphics.Обратитесь к Руководству по программированию Quartz 2D для хорошего обзора рисования 2D-изображений с использованием CoreGraphics.

...